C#FileSystemWatcher在我物理删除文件时触发,但不是在我使用File.Move时

时间:2017-05-18 10:01:42

标签: c# events filesystemwatcher

Excel文件被手动删除到本地文件夹中,有一个FileWatcher将文件转换为新的文件结构并将其移动到下一个文件夹,该文件夹也有一个filewatcher。问题是,当此文件移动到下一个文件夹时,filewatcher不会触发任何事件。但是,如果我切断它并在物理上放下事件就会发生火灾。 我正在使用File.Move将文件从folder1复制到folder2

2 个答案:

答案 0 :(得分:2)

你应该看看FileSystemWatcher detect when file is moved to folder

实际上当有移动时,filesystemwatcher发送一个删除(在源目录观察器中)和一个创建(在目标目录观察器中)。

答案 1 :(得分:0)

尝试使用重命名的事件。

另一个原因可能是缓冲区大小可能超过。

 Public void WatchItBaby()
 {
    // ...
    FileSystemWatcher watcher = new FileSystemWatcher(@"c:\temp\", "*.txt");            
    watcher.Created += new FileSystemEventHandler(OnChangedOrRenamed);          
    watcher.Renamed += new RenamedEventHandler(OnChangedOrRenamed);
    watcher.EnableRaisingEvents = true;
    // ...
 }

 private void OnChangedOrRenamed(object source, FileSystemEventArgs e)
 {
    // stuff        
 }