2012-05-31 4 views
2

Я написал утилиту, чтобы выяснить, когда файл Excel обновлен. Я должен прочитать один и тот же файл Excel после того, как будут сделаны обновления. Однако я не уведомлен об обновлениях, вместо этого создается уведомление о создании временного файла (что для меня бесполезно). Как я могу сделать это в форме C# Windows?LastWrite NotifyFilter в FileSystemWatcher

Вот фрагмент кода используется:

    watcher.EnableRaisingEvents = true; 
        watcher.Filter = "*.xlsx"; 
        watcher.NotifyFilter = NotifyFilters.LastWrite; 
        watcher.Path = "G:\\Prerequisites Folder"; 
        watcher.SynchronizingObject = this; 
        watcher.Changed += new FileSystemEventHandler(watcher_Changed); 

      void watcher_Changed(object sender, FileSystemEventArgs e) 
      { 

      if (e.Name.StartsWith("~") == false) 
        btnRefreshPrequisites_Click(null, null); 
      } 

Все, что мне не хватает?

ответ

0
void watcher_Changed(object sender, FileSystemEventArgs e) 
     { 
     //no need to check if (e.Name.StartsWith("~") == false) 
     // comment the if statement 
     if (e.Name.StartsWith("~") == false) 
       btnRefreshPrequisites_Click(null, null); 

     //do your work 
     } 
3

Это по дизайну общий подход для многих программ. При изменении файлов они пытаются убедиться, что эти модификации не уничтожают исходный файл, если они по какой-либо причине не работают. Поэтому они копируют исходный файл во временное имя, вносят изменения во временный файл. И когда ничего не получится, переименуйте оригинал, переименуйте временное, чтобы он получил то же имя, что и оригинал, и, наконец, удалил переименованный оригинал.

Так что вам также нужно будет заинтересовать событие Renamed.

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