C#FileSystemWatcher.Deleted没有"正常"删除?

eMi*_*eMi 7 .net c#

码:

FileSystemWatcher fileSystemWatcher = new FileSystemWatcher(path, "*.exe");
fileSystemWatcher.IncludeSubdirectories = true;
fileSystemWatcher.Created += new FileSystemEventHandler(fileSystemWatcher_Created);
fileSystemWatcher.Deleted += new FileSystemEventHandler(fileSystemWatcher_Deleted);
fileSystemWatcher.EnableRaisingEvents = true;
Run Code Online (Sandbox Code Playgroud)

创建事件工作正常,但删除事件仅在使用SHIFT删除目录/或Exe时触发.但正常删除(移动到回收站)不起作用/触发事件!

如何解决问题?

小智 10

我知道这是一个老问题,但我通过将FileName添加到FileSystemWatcher对象的NotifyFilter属性来解决这个问题.


Jer*_*Gee 5

这是预期的行为,因为文件实际上没有被删除:它被移动了.

尝试附加到

filesystemWatcher.Renamed
Run Code Online (Sandbox Code Playgroud)

并检查文件是否转移到回收站.

请注意,查找回收站实际位于文件系统中的位置并非易事.其他人发布的一些代码(未经验证)在这里:http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/5d2be9aa-411c-4fd1-80f5-895f64aa672a/ - 而且这里:怎么能我告诉一个目录是C#中的回收站?