有很奇怪的情况。有两个应用程序:
1)C:\ MyFolder1 \ First.exe
2)C:\ MyFolder2 \ Second.exe
First.exe运行Second.exe并退出。
Process.Start(@"C:\MyFolder2\Second.exe");
// And exit.
Seconds.exe等待几秒钟并尝试删除“C:\ MyFolder1 \”文件夹。
// Wait for 5 seconds - First.exe terminated by that time for 100%
Directory.Delete(@"C:\MyFolder1\", true);
操作失败,“进程无法访问文件'C:\ MyFolder1 \',因为它正被另一个进程使用。”它能够删除First.exe文件(实际上是文件夹中的所有文件),但不能文件夹本身。
有人知道文件夹被第二个进程锁定的原因吗?
答案 0 :(得分:3)
进程有一个默认的工作目录。您可以使用ProcessStartInfo.WorkingDirectory设置其初始值。你不能破坏那个地板垫,它会锁定该目录,直到进程终止或用Environment.CurrentDirectory更改其工作目录。由于您没有设置它,因此Second.exe的默认工作目录是C:\ MyFolder1。
答案 1 :(得分:0)
我认为First.exe没有停止。请检查进程树。 (文件夹1被此过程锁定)
答案 2 :(得分:0)
使用Process.WaitForExit确保完成(并可能避免那些5秒)