2011-02-11 86 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