2009-08-21 4 views
0

Я загружаю файл с сервера и открываю его с помощью Process.Start() и прикрепляя наблюдателя к файлу, чтобы поймать любые изменения и повторно загрузить их на сервер.FileSystemWatcher - как определить, когда файл закрыт?

Есть ли способ определить, когда файл закрыт с помощью FileWatcher или любого другого метода? Проблема в том, что я не могу решить, как остановить просмотр файла, и я не хочу, чтобы он смотрел бесконечно?

Любые идеи?

Заранее спасибо

Jon

+1

Вы можете найти ответ на свой вопрос в одном из них: http://stackoverflow.com/questions/561467/filesystemwatcher-waitforchanged-returns-but-there-is-still-a-lock-on-the- файл, http://stackoverflow.com/questions/699538/file-access-error-with-filesystemwatcher-when-multiple-files-are-added-to-a-direc –

ответ

1

То, что я был поставлен на 5 минут цикла и просто наблюдать за файл, который будет доступен. Таким образом, я мог бы дать время освободиться, но все же имел окончательное время. Если он не очистился на 5 минут в моей системе, то что-то определенно неправильно. Вы должны установить лимит времени на свои обстоятельства. Я получил эту идею откуда-то, не знаю, где больше.

 DateTime EndTime = System.DateTime.Now.AddMinutes((double)timeOut); 

     while (System.DateTime.Now <= EndTime) 
     { 
      try 
      { 
       using (Stream stream = System.IO.File.Open(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) 
       { 
        if (stream != null) 
        { 
         break; 
        } 
       } 
      } 
      catch (FileNotFoundException) 
      { 
       // 
      } 
      catch (IOException) 
      { 
       // 
      } 
      catch (UnauthorizedAccessException) 
      { 
       // 
      } 


      System.Threading.Thread.Sleep(sleepTime); 
     } 
Смежные вопросы