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

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

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

然后,在移动之前,我想locking目录到其他进程,所以我可以肯定,Directory.Move不会抛出任何exception。

什么是最好的方式来实现呢?

我想避免逐个检查单个文件的使用情况,因为在软件检查时不使用文件并不意味着在移动过程开始时不会使用它。

Solutions Collecting From Web of "有没有办法立即检查目录是否在使用?"

没有办法锁定文件夹(+子文件夹),所以你总是会有一个竞争条件 ,并不能保证不会有任何例外。

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

只要尝试移动文件夹,如果不成功,以后再试。

另请参阅: 德尔福:检查文件是否在使用 (这是一个类似的问题,只是忽略德尔福部分)

描述

你可以把你的文件opteration到一个try .. catch块并捕获IOException

样品

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

更多信息

  • MSDN – IOException类