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

有没有人有一个想法,为什么该文件夹被第二个进程锁定?

+1

我编辑了您的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

+0

First.exe进程是否正在运行? –

+0

不,First.exe在Second.exe开始删除文件夹之前存在。 – Vad

回答

3

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

+0

就是这样!谢谢。 因此,在Second.exe默认情况下,Environment.CurrentDirectory的值是“C:\ MyFolder1”。将其设置为“C:\ MyFolder2”后,删除工作。 – Vad

0

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

0

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