如何识别是否打开文件夹?
问题描述:
在我的应用程序中,我试图重命名该文件夹,但是如果该文件夹在Windows资源管理器中打开,我将获得一个IOException
。如何识别是否在C#中的Windows资源管理器中打开文件夹?如何识别是否打开文件夹?
答
catch the IOException?
正如其他人所说的,只是尝试做你想做的事情,如果发生了异常并采取适当的行动,无论在你的情况下如何。
你真的没有太多的选择,因为我看到它,认为:
bool iHaveAccess = CheckAccess(folder);
if (iHaveAccess)
{
RenameFolder(folder,newFolderName);
}
成功,并呼吁RenameFolder别的锁定该文件夹的checkAccess之间是否会发生什么?那么怎么办?
+0
是的,这是我如何去做。无论如何,你应该可以监控这个。 – Toji 2010-01-22 15:56:03
答
确定某个程序是否打开了一个文件夹,以防止重命名该文件夹是不合理的。因为在您做出决定之后,其他进程可能会启动或停止使用该文件夹。相反,只需执行操作并捕获所产生的异常。
try {
Directory.Move("old","new");
return true;
} catch (IOException) {
return false;
}
Windows资源管理器,cmd,其他文件管理器,shell打开/保存对话框。除了资源管理器之外,还有更多的东西可以让这个开放。 – Joey 2010-01-22 15:54:05
您是否想要确定Windows资源管理器是专门打开它,还是仅仅确定某个其他进程是否具有打开的句柄?你想完成什么?捕获异常是一个很好的迹象,表明某些其他进程可以处理它,如果这就是你想要的。 – Dathan 2010-01-22 15:57:05
@Dathan捕捉异常是个好主意,但我们有非常大的代码库的多线程应用程序。如果我们识别出我们已经接受的天气,那就太好了。谢谢 – 2010-01-22 16:02:38