C#-锁定目录,直到将所有文件复制到其中

时间:2018-11-23 07:12:55

标签: c#

在特定位置创建包含文件的目录。在该位置,另一个软件会不断检查新目录,然后立即处理该目录。

现在,问题是,

当我要将文件复制到该位置时,我首先创建目录,然后复制其中的所有文件。但是一旦创建目录,处理软件就会处理该目录并将其删除。我的复制功能引发了异常。

if (!Directory.Exists(DestinationPath))
    Directory.CreateDirectory(DestinationPath);
CopyFilesInDirectory();//Throw exception as directory created above processed by another software and deleted.

我要做的是,停止父目录被其他软件处理,直到我的文件复制完成为止。

1 个答案:

答案 0 :(得分:1)

如果机会不多,可以通过保持目录打开来阻止其他软件删除目录,例如

if (!Directory.Exists(DestinationPath))
    Directory.CreateDirectory(DestinationPath);
using(var lockFile = File.Open(Path.Combine(DestinationPath, "_lock"))
{
   CopyFilesInDirectory();
}

如果其他软件可能在第二和第三行之后删除目录,则需要重试,直到打开锁定文件。

更干净的方法当然是修改其他软件。