首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >C#:删除FileSystemWatcher文件夹后会发生什么?

C#:删除FileSystemWatcher文件夹后会发生什么?
EN

Stack Overflow用户
提问于 2017-03-19 04:10:37
回答 2查看 707关注 0票数 4

我正在为正在开发的一些代码使用FileSystemWatchers。我确实有一个问题,当它正在观看的文件夹被删除时,FSW会发生什么情况?

我的用法是:

  1. 用户创建目录Foo
  2. 我的代码然后监视Foo使用和FSW。
  3. 用户删除Foo
  4. 稍后,用户重新创建Foo目录。

在这种情况下,最初的FSW会发生什么?它是否还在观察新目录,还是必须创建一个新目录?

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-19 05:10:10

TL;DR:不,FSW在被重新创建后不会自动手表"Foo“。

最简单的方法是验证它是测试出来的,所以我做了。

如果使用FileSystemWatcher实例查看目录"Foo",然后删除正在监视的目录,则FileSystemWatcher将停止监视该目录。

即使在重新创建了同名为"Foo“的目录之后,FileSystemWatcher也不会为该目录中的任何更改引发事件。

在删除和重新创建"Foo“之后,尝试通过将"Foo”属性设置为"Foo“来”重置“FileSystemWatcher,而将EnableRaisingEvents属性设置为”true“则不能一致地工作--它第一次正确工作,但如果删除”Foo“并再次重新创建,则无法做到这一点。(在VisualStudio2017社区版中进行了测试)。

可悲的是,在这种情况下,使FileSystemWatcher按预期工作的唯一一致方法是创建FileSystemWatcher的一个新实例。

票数 4
EN

Stack Overflow用户

发布于 2017-03-19 04:16:21

MSDN说:

一些常见的事件,如复制或移动文件或目录,并不直接对应于事件,但这些事件确实会引发事件。复制文件或目录时,如果正在监视文件或目录,系统将在复制该文件的目录中引发创建的事件。如果FileSystemWatcher的另一个实例正在监视您复制的目录,则不会引发任何事件。例如,创建两个FileSystemWatcher实例。FileSystemWatcher1被设置为查看"C:\My Documents",而FileSystemWatcher2则设置为监视"C:\Your Documents“。如果您将文件从“我的文档”复制到“您的文档”,则FileSystemWatcher2将引发创建的事件,但FileSystemWatcher1不会引发任何事件。与复制不同,移动文件或目录会引发两个事件。从前面的示例中,如果您将文件从“我的文档”移动到“您的文档”,则FileSystemWatcher2将引发创建的事件,而FileSystemWatcher1将引发已删除的事件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42882838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档