Я думал, что это совершенно тривиальная задача, но у меня немного болит голова. Я хотел бы открыть файл, чтобы убедиться, что получил эксклюзивный доступ, протестировать его на определенные условия и затем удалить его.
Сейчас я использую 99% подход:
FileStream s = null;
try {
s = new FileStream (
path,
FileMode.Open,
FileAccess.ReadWrite,
FileShare.None);
// some stuff about the file is checked here
s.Dispose ();
// hope the file is not accessed by someone else...
File.Delete (path);
return true;
}
catch (IOException) {
if (s !=null) s.Dispose ();
return false;
}
Обычно это работает, но я подумал, что есть лучший способ избежать условия края.
Открытие файла с флагом DeleteOnClose не работает, поскольку указанная проверка (которая происходит после открытия с уже установленным флагом удаления) может указывать на то, что файл не должен быть удален.