Я пишу службу Windows, которая может удалить файл в какой-то момент. Поскольку служба имеет дело с обычным файловым IO, возможно, что файл может использоваться во время удаления.Как определить, что файл используется перед удалением?
В настоящее время я пытаюсь удалить и отреагировать позже, когда произойдет исключение. Код выглядит примерно так:
try
{
File.Delete(file);
Status = ResponseStatus.Ok;
}
catch (IOException e)
{
Status = ResponseStatus.FileInUse;
}
finally
{
return Status;
}
Как определить, используется ли файл без использования исключения?
Что не так с вашим нынешним подходом? –
@PK, я не уверен, что это лучшее решение. Я решил, что я попрошу толпу и объединить мозг, безусловно, придумает лучший способ решить проблему. – Vadim
@PK: Идея его нынешнего подхода (удалить и посмотреть, не сработала ли она) верна, но он не обязательно должен использовать здесь «Исключение». Если он делает это во многих файлах, то накладные расходы на основе «Исключения» могут быть существенными. Импорт 'DeleteFile' должен быть быстрее, поскольку он все еще может проверить успех, но не будет обременен накладными расходами на разматывание стека и т. Д. –