有没有办法立即检查目录是否正在使用?

时间:2012-01-25 13:59:12

标签: c# windows file filesystems

我想用Directory.Move移动目录及其所有子目录。

然而,在我这样做之前,我想检查目录及其子目录中的任何文件和子文件是否正被其他进程使用。

然后,在移动之前,我想将目录锁定到其他进程,因此我可以确定Directory.Move不会抛出任何异常。

实现这一目标的最佳方法是什么?

我想避免按文件检查单个文件文件的用法,因为软件检查时不使用该文件的事实并不意味着在移动过程中不会使用它启动。

2 个答案:

答案 0 :(得分:9)

无法锁定文件夹(+子文件夹),因此您总是以race condition结束,并且无法保证不会有例外。

检查和移动之间总会有变化的可能性,所以事情可能会出错。

尝试移动文件夹,如果没有成功,请稍后重试。

另见:Delphi: Check whether file is in use(这是一个类似的问题,只是忽略了Delphi部分)

答案 1 :(得分:2)

描述

您可以将File opteration放入try .. catch块 并抓住IOException

示例

try 
{
   // try to move
} 
catch (System.IO.IOException ex) 
{
   // file used by another process or other IO Exception
}

更多信息