У меня есть утилита C #, которая должна выполнить некоторые действия, как только конкретный файл будет выпущен другим процессом, то есть этот процесс прекратит запись в файл.Я использую приведенный ниже код, но он работает некорректно в системе Windows 7.
private static bool FileWritten(string filename)
{
try
{
using (FileStream inputStream = File.Open(filename, FileMode.Open,
FileAccess.Read,
FileShare.None))
{
return true;
}
}
catch (IOException e)
{
return false;
}
}
Иногда он возвращает false, даже если кажется, что файл уже выпущен.Я вызываю FileWritten () в цикле while (true), который продолжает проверять вызов FileWritten () до тех пор, пока он возвращает false, а затем завершается через некоторое максимальное время.Отладить это сложно, так как кажется, что он отлично работает в отладчике (то есть он возвращает true, как только файл на самом деле выпущен), но затем не работает, когда я запускаю свой код напрямую.Кроме того, даже добавление отладочных отпечатков, похоже, влияет на его поведение.
Есть ли более надежный способ проверить, был ли файл записан и выпущен, который будет работать в Win 7 и, предпочтительно, также в Win XP?