Как определить, открыта ли папка?
-
22-09-2019 - |
Вопрос
В моем приложении я пытаюсь переименовать папку, но если папка открыта в проводнике Windows, я получаю IOException
.Как я могу определить, открыта ли папка в проводнике Windows на C #?
Решение
перехватить исключение IOException?
Как говорили другие, просто попробуйте делать то, что вы хотите, перехватите исключение, если оно произойдет, и предпримите соответствующие действия, какими бы они ни были в вашем контексте.
На мой взгляд, у тебя на самом деле не так уж много выбора, подумай:
bool iHaveAccess = CheckAccess(folder);
if (iHaveAccess)
{
RenameFolder(folder,newFolderName);
}
что произойдет, если между успешным выполнением checkAccess и вызовом RenameFolder что-то еще заблокирует папку?Что ты собираешься делать потом?
Другие советы
неразумно определять, открыта ли у программы папка таким образом, который не позволяет вам переименовать ее.Потому что сразу после того, как вы примете решение, другой процесс может запустить или прекратить использование папки.Вместо этого просто выполните операцию и перехватите результирующее исключение.
try {
Directory.Move("old","new");
return true;
} catch ( IOException ) {
return false;
}