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

码:

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

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

如何解决问题?

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

尝试附加到

 filesystemWatcher.Renamed 

并检查文件是否被移动到回收站。

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

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