C# 有没有办法立即检查目录是否正在使用?
我想用directory.move移动一个目录及其所有子目录 但是,在执行此操作之前,我想检查目录及其子目录中的任何文件和子文件是否正在被其他进程使用 然后,在移动之前,我想将目录锁定到其他进程,这样我可以确保directory.move不会抛出任何异常 实现这一目标的最佳方式是什么C# 有没有办法立即检查目录是否正在使用?,c#,windows,file,filesystems,C#,Windows,File,Filesystems,我想用directory.move移动一个目录及其所有子目录 但是,在执行此操作之前,我想检查目录及其子目录中的任何文件和子文件是否正在被其他进程使用 然后,在移动之前,我想将目录锁定到其他进程,这样我可以确保directory.move不会抛出任何异常 实现这一目标的最佳方式是什么 我希望避免逐个文件检查单个文件的使用情况,因为软件检查文件时不使用该文件并不意味着移动过程开始时不会使用该文件。无法锁定文件夹(+子文件夹)所以,你总是会以一个错误而告终,而且也不能保证不会有例外 总是有可能在支票
我希望避免逐个文件检查单个文件的使用情况,因为软件检查文件时不使用该文件并不意味着移动过程开始时不会使用该文件。无法锁定文件夹(+子文件夹)所以,你总是会以一个错误而告终,而且也不能保证不会有例外 总是有可能在支票和移动之间发生变化,因此事情可能会出错 只需尝试移动文件夹,如果不成功,请稍后重试 另请参见:(这是一个类似的问题,忽略Delphi部分)说明 你可以试试你的文件选择。。挡块 和catch
IOException
样品
更多信息
Task.Delay(新的时间跨度(0,0,0,5)).ContinueWith((o)=>WatchDogOnCreated(这是fileSystemEventArgs))代码>与您的代码(放置在catch子句中)结合使用-这确实是一个非常关键的代码,但我发现这是可行的。至少这是一个解决方法。
try
{
// try to move
}
catch (System.IO.IOException ex)
{
// file used by another process or other IO Exception
}