FileSystemWatcher - как определить, когда файл закрыт? - PullRequest
0 голосов
/ 21 августа 2009

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

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

Есть идеи?

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

Jon

1 Ответ

1 голос
/ 21 августа 2009

Я сделал 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);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...