进程锁定文件夹

时间:2012-11-14 02:17:01

标签: c# process

有很奇怪的情况。有两个应用程序:

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文件(实际上是文件夹中的所有文件),但不能文件夹本身。

有人知道文件夹被第二个进程锁定的原因吗?

3 个答案:

答案 0 :(得分:3)

进程有一个默认的工作目录。您可以使用ProcessStartInfo.WorkingDirectory设置其初始值。你不能破坏那个地板垫,它会锁定该目录,直到进程终止或用Environment.CurrentDirectory更改其工作目录。由于您没有设置它,因此Second.exe的默认工作目录是C:\ MyFolder1。

答案 1 :(得分:0)

我认为First.exe没有停止。请检查进程树。 (文件夹1被此过程锁定)

答案 2 :(得分:0)

使用Process.WaitForExit确保完成(并可能避免那些5秒)