如何识别是否打开文件夹?

在我的应用程序中,我正在尝试重命名该文件夹,但如果在Windows资源管理器中打开该文件夹,则会收到IOException 。 如何识别是否在C#中的Windows资源管理器中打开文件夹?

捕获IOException?

正如其他人所说,只是尝试做你想做的事情,如果它发生就抓住exception并采取适当的行动,无论你在上下文中是什么。

我认为你没有多少选择,考虑一下:

 bool iHaveAccess = CheckAccess(folder); if (iHaveAccess) { RenameFolder(folder,newFolderName); } 

如果在CheckAccess成功和调用RenameFolder之间会发生什么事情会锁定文件夹会发生什么? 那会怎么做?

确定某个程序是否以某种方式打开文件夹以阻止您重命名它是不合理的。 因为您在做出决定后立即开始或停止使用该文件夹。 而只是执行操作并捕获生成的exception。

 try { Directory.Move("old","new"); return true; } catch ( IOException ) { return false; } 

经过一点点搜索后 ,我发现这篇文章和这篇文章展示了各种技术,以便您可以以编程方式确定哪个进程锁定了文件。 其中一个应该允许您检查资源管理器是否已锁定文件夹。