我想使用Directory.Move移动一个目录及其所有子目录。
但在此之前,我想检查该目录及其子目录中的所有文件和子文件是否正在被其他进程使用。
然后,在移动之前,我想锁定该目录以防止其他进程访问,以确保Directory.Move不会抛出任何异常。
如何最好地实现这一点?
我希望避免逐个文件检查使用情况,因为当软件检查文件时,文件未被使用并不意味着在移动过程开始时它不会被使用。
我想使用Directory.Move移动一个目录及其所有子目录。
但在此之前,我想检查该目录及其子目录中的所有文件和子文件是否正在被其他进程使用。
然后,在移动之前,我想锁定该目录以防止其他进程访问,以确保Directory.Move不会抛出任何异常。
如何最好地实现这一点?
我希望避免逐个文件检查使用情况,因为当软件检查文件时,文件未被使用并不意味着在移动过程开始时它不会被使用。
您可以将文件操作放入try..catch块中,并捕获IOException
异常。
try
{
// try to move
}
catch (System.IO.IOException ex)
{
// file used by another process or other IO Exception
}
Task.Delay(new TimeSpan(0, 0, 0, 5)).ContinueWith((o) => WatchDogOnCreated(this, fileSystemEventArgs));
与您的代码结合使用(放置在 catch 子句中 - 这确实是非常关键的代码,但我发现这个方法可行。至少它是一个解决方法。 - SharpShade