在特定位置创建包含文件的目录。在该位置,另一个软件会不断检查新目录,然后立即处理该目录。
现在,问题是,
当我要将文件复制到该位置时,我首先创建目录,然后复制其中的所有文件。但是一旦创建目录,处理软件就会处理该目录并将其删除。我的复制功能引发了异常。
if (!Directory.Exists(DestinationPath))
Directory.CreateDirectory(DestinationPath);
CopyFilesInDirectory();//Throw exception as directory created above processed by another software and deleted.
我要做的是,停止父目录被其他软件处理,直到我的文件复制完成为止。
答案 0 :(得分:1)
如果机会不多,可以通过保持目录打开来阻止其他软件删除目录,例如
if (!Directory.Exists(DestinationPath))
Directory.CreateDirectory(DestinationPath);
using(var lockFile = File.Open(Path.Combine(DestinationPath, "_lock"))
{
CopyFilesInDirectory();
}
如果其他软件可能在第二和第三行之后删除目录,则需要重试,直到打开锁定文件。
更干净的方法当然是修改其他软件。