2014-11-14 2 views
0

Мне нужно следить за изменениями одной из папок.C# FileSystemWatcher Событие

class FileWatcher 
{ 
    FileSystemWatcher watcher = new FileSystemWatcher(); 

    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")] 
    public void StartWatching() 
    { 
     watcher.Path = AppDomain.CurrentDomain.BaseDirectory + "\\Read test data"; 

     watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite 
      | NotifyFilters.FileName | NotifyFilters.DirectoryName;    

     watcher.Changed += new FileSystemEventHandler(OnChanged); 

     watcher.EnableRaisingEvents = true; 
    } 

    private static void OnChanged(object source, FileSystemEventArgs e) 
    { 
     Console.WriteLine("Changes in folder: 'Read test data' ");   
    } 
} 

И инициализации:

private FileWatcher watch = new FileWatcher(); 

    private void StartReadCVSChanges_Click(object sender, EventArgs e) 
    {  
     watch.StartWatching(); 
    } 

По какой-то причине, когда у меня есть некоторые изменения, обработчик события вызывается 3 раза:

enter image description here

Я предпочитаю, чтобы это было один раз.

Любые идеи?

+0

может быть, это будет стоить обработок различных событий из различных методов, а не только обработки это из одного? В соответствии с примером в msdn: http://msdn.microsoft.com/en-us/library/System.IO.FileSystemWatcher(v=vs.110).aspx - Также проверьте тип изменения: http: // msdn. microsoft.com/en-us/library/system.io.filesystemeventargs(v=vs.110).aspx – Ric

ответ

0

см. Это link Текст оттуда.

В некоторых ситуациях вы можете заметить, что одно событие создания создает несколько созданных событий, которые обрабатываются вашим компонентом. Например, если вы используете компонент FileSystemWatcher для наблюдения за созданием новых файлов в каталоге , а затем протестируйте его с помощью Notepad , чтобы создать файл, вы можете увидеть два Созданных события, хотя даже только один файл был создано. Это связано с тем, что в процессе записи Notepad выполняет несколько действий файловой системы. Блокнот записывает на диск партиями, которые создают содержимое файла и , затем атрибуты файла. Другие приложения могут выполнять в том же manner.Because FileSystemWatcher контролирует операционную систему деятельности, все события, которые эти приложения огнь будет подобран

Смежные вопросы