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