2009-10-29 130 views
5

我正在構建一個解壓縮文件並處理該文件的C#程序。如何殺死一個C#進程?

有時候,我得到這個消息:「該進程無法訪問文件c:....因爲它正被另一個進程使用」

我能做些什麼?如何殺死它?

回答

10

你必須找出哪個程序正在訪問該文件。你忘了退出你自己的應用程序,還是有其他訪問文件?

您可以編寫C#代碼來殺死進程,但更好的方法是找出爲什麼它已被另一進程使用。此外

Process[] ps = Process.GetProcessesByName("nameOfProcess"); 

foreach (Process p in ps) 
    p.Kill(); 

,如@Darin筆記,你可以看看這個其他SO線程:

要殺死名nameOfProcess所有過程在C#How do I find out which process is locking a file using .NET?

Sysinternals的工具在@Darin中提到的評論發現在http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

+2

要首先了解誰鎖定了您的文件,您應該從sysinternals中查看ProcessMonitor。只需點擊工具欄中的Spyglass並輸入文件的名稱即可。你會得到一個列表,這個文件有一個打開的句柄。 – Oliver 2009-10-29 08:25:14

2

過程監視器將工作,但Process Explorer是一個更好的應用程序 這個。它也來自現在由微軟擁有的Sysinternals。以管理員身份運行Process Explorer,然後單擊搜索按鈕。這將顯示正在使用該文件的應用程序和線程。

+0

我第二個這個答案。這在我的調試中幫了我很大忙。 – Joel 2014-09-17 14:52:37