Я думал, что это совершенно тривиальная задача, но у меня немного заболела голова. Я хотел бы открыть файл, чтобы убедиться, что у меня есть монопольный доступ, проверить наличие определенных условий, а затем удалить его.
Сейчас я использую подход 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 не работает, потому что указанная проверка (которая происходит после открытия с уже установленным флагом удаления) может указывать на то, что файл не следует удалять.