2

有很奇怪的情况。有2个应用:

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

有谁知道为什么该文件夹被第二个进程锁定?

4

3 回答 3

4

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

于 2012-11-14T02:28:29.573 回答
0

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

于 2012-11-14T02:23:50.067 回答
0

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

于 2012-11-14T04:58:21.123 回答