Каков самый простой способ блокировки потока до тех пор, пока файл не будет разблокирован и недоступен для чтения и переименования? Например, существует ли WaitOnFile() где-то в .NET Framework?
У меня есть служба, которая использует FileSystemWatcher для поиска файлов, которые должны быть переданы на FTP-сайт, но созданное файлом событие срабатывает до того, как другой процесс завершит запись файла.
Идеальное решение будет иметь период ожидания, чтобы поток не зависал навсегда, прежде чем отказаться.
Изменить: после тестирования некоторых из нижеприведенных решений я закончил смену системы, чтобы все файлы писали в Path.GetTempFileName()
, а затем выполнили File.Move()
в конечном месте. Как только событие FileSystemWatcher
запущено, файл уже завершен.