Ожидание файла, который будет создан в C # - PullRequest
3 голосов
/ 03 февраля 2009

Есть ли встроенный метод для ожидания создания файла в c #? Как насчет ожидания полного написания файла?

Я испек свой собственный, неоднократно пытаясь File.OpenRead () для файла, пока он не преуспеет (и терпит неудачу в течение тайм-аута), но вращение в файле не кажется правильным выбором. Я предполагаю, что в .NET для этого есть встроенный метод, но я не могу его найти.

Ответы [ 4 ]

10 голосов
/ 03 февраля 2009

А как насчет использования компонента FileSystemWatcher?

Этот класс «отслеживает» заданный каталог или файл и может вызывать события, когда что-то (вы можете определить, что) произошло.

3 голосов
/ 22 июня 2012

При создании файла с File.Create вы можете просто вызвать функцию Close. Как это:

File.Create(savePath).Close();
1 голос
/ 02 ноября 2010

FileSysWatcher не может отслеживать сетевые пути. В таких случаях вам придется вручную сканировать файлы в каталоге, что может привести к ошибке вышеупомянутых пользователей.

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

1 голос
/ 03 февраля 2009

FileSystemWatcher может уведомить вас, когда файл будет создан, удален, обновлен, изменены атрибуты и т. Д. Это решит вашу первую проблему с ожиданием его создания.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...