我正在使用FileWatcher在文件添加到文件夹后立即触发处理。在处理完文件后,它将被删除。
我的问题是,在删除文件之后,我得到另一个文件更改事件,这个事件非常接近删除,而在某些情况下检查File.Exists它会告诉该文件仍然存在。但当然,在寻找处理文件的几毫秒之后,它并不存在。 FileWatcher设置为通知 NotifyFilters.FileName | NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.Size | NotifyFilters.Attributes
谢谢, 林
答案 0 :(得分:1)
如果你对SO进行一些搜索,你会发现很多问题,人们喜欢检查他们是否能够访问文件,或者他们是否拥有所需的权利。
问题是,即使你检查它(就像你使用File.Exists()
一样),当涉及到实际操作时,情况也会改变。
因此,只需抛出File.Exists()
并在删除操作周围添加try catch
如果它失败了,你可以自行决定是否只是静静地删除它,通知用户,关闭你的应用程序,关闭电脑等等。
答案 1 :(得分:0)
通常filewatcher会多次触发,因为fileChange是一系列事件。 这是一个有用的链接。 http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx 滚动到最后。