DirectoryInfo di = new DirectoryInfo(lPath);
DirectoryInfo dest = new DirectoryInfo(lPath9);
if (!dest.Exists) dest.Create(di.GetAccessControl());
string mapDirName = di.FullName;
di.Delete(true);
Thread.Sleep(20); // let the process wait a bit
dest.MoveTo(mapDirName);
Thread.Sleep(20); // let the process wait a bit
上面的代码大部分时间都有效。但是,有时将 dest 重命名为 di 后会丢失一些子目录。
我认为这是因为在删除完成之前重命名已经开始。在重命名之前,我可以添加一个 while 循环来检查 di 是否存在。如,
int i=0;
While (di.Exists && i < 10) {
Thread.Sleep(10000);
i++;
}
它仍然只会等待 10000*10 毫秒。如果不进入无限循环,就没有确定的方法。