2011-02-11 92 views
2

我有以下代碼,並且WaitForExit方法未在等待。它只是運行命令並轉到下一個語句。該命令用於取消未安裝應用程序,並且該parms用於卸載命令。卸載運行良好,但我需要在卸載之前完成...它不會阻塞。Process.WaitForExit不等待

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = commandName; 
startInfo.Arguments = parms; 
Process process = Process.Start(startInfo); 
process.WaitForExit(); 
+3

可能會產生新進程並關閉 – Andrey 2011-02-11 18:21:12

回答

7

我強烈懷疑安德烈的評論是正確的 - 你開始過程退出,但已經開始了新的過程本身。

找到該問題的簡單方法是在致電WaitForExit之前打印process.Id,然後嘗試在任務管理器中查找該進程。我懷疑你會發現它不會在那裏。

您可能希望循環,在等待卸載的另一個指示器正在完成時暫時休眠 - 例如正在刪除特定文件或註冊表項。不理想,但它可能是最好的。

+0

,例如安裝程序通常會調用msiexec進程。 – Andrey 2011-02-11 18:32:41