等到過程結束
回答
我覺得你只是想這樣的:
var process = Process.Start(...);
process.WaitForExit();
的方法見MSDN page。它也有超載的地方,你可以指定超時時間,所以你不會永遠等待。
使用Process.WaitForExit
?或者如果您不想阻止,請訂閱Process.Exited
活動?如果這不符合你的要求,請給我們更多關於你的要求的信息。
Process.WaitForExit應該就是你想要的,我認爲。
你可以使用等待退出,或者你可以趕上HasExited財產和更新用戶界面,使用戶「通知」(期望管理):
System.Diagnostics.Process process = System.Diagnostics.Process.Start("cmd.exe");
while (!process.HasExited)
{
//update UI
}
//done
我做我的應用程序如下:
Process process = new Process();
process.StartInfo.FileName = executable;
process.StartInfo.Arguments = arguments;
process.StartInfo.ErrorDialog = true;
process.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
process.Start();
process.WaitForExit(1000 * 60 * 5); // Wait up to five minutes.
裏面還有一些額外的功能,你可能會發現有用...
否「它也適用於......」 – AnthonyLambert 2013-08-28 13:42:55
試試這個:
string command = "...";
var process = Process.Start(command);
process.WaitForExit();
對已回答的已回答問題的答案的評論有什麼意見?你不僅浪費了你自己的週期,而且還迫使我浪費我的週期。 – 2015-07-01 13:53:40
@AdamBilinski問題和答案旨在讓其他人不僅有問題的人可以看到問題 – L3n 2015-07-23 23:07:19
@ L3n我同意,但這個答案與接受的答案完全相同,因此它毫無意義! – 2015-07-24 08:55:58
我有一個案例,Process.HasExited
在關閉屬於該進程的窗口後沒有改變。所以Process.WaitForExit()
也沒有工作。我不得不監測Process.Responding
那去假關閉窗口一樣,後:
while (!_process.HasExited && _process.Responding) {
Thread.Sleep(100);
}
...
也許這可以幫助別人。
像喬恩斯基特說,使用Process.Exited
:
proc.StartInfo.FileName = exportPath + @"\" + fileExe;
proc.Exited += new EventHandler(myProcess_Exited);
proc.Start();
inProcess = true;
while (inProcess)
{
proc.Refresh();
System.Threading.Thread.Sleep(10);
if (proc.HasExited)
{
inProcess = false;
}
}
private void myProcess_Exited(object sender, System.EventArgs e)
{
inProcess = false;
Console.WriteLine("Exit time: {0}\r\n" +
"Exit code: {1}\r\n", proc.ExitTime, proc.ExitCode);
}
沒有真正回答這個問題。請優化您的答案以解決問題 – Grantly 2017-11-24 16:24:31
現在呢?也許打開VB並做出解決方案;) – 2017-11-24 18:17:06
- 1. 等到previos過程結束
- 2. 等到每個過程結束
- 3. shell腳本等到過程結束
- 4. 等到dispatch_async線程結束
- 5. 如何要等到線程結束
- 6. 等待,直到例程結束Arduino
- 7. 不等待線程結束
- 8. 不能等待過程中運行,直到結束
- 9. jquery - 等到函數結束
- 10. 等到功能結束
- 11. 等到活動結束後
- 12. 等到處理結束
- 13. jQuery - 等到SlideUp()結束()
- 14. 結束matlab過程
- 15. 結束PLSQL過程
- 16. 等待HttpWebRequest.BeginGetRequestStream結束
- 17. 等待pthread_cancel結束
- 18. 過程在TTF_RenderText_Shaded行結束
- 19. 過程意外結束
- 20. 結束的組裝過程
- 21. Lua程序過早結束
- 22. C++程序過早結束
- 23. 不能等待線程結束onPause
- 24. 正在等待進程結束
- 25. 等待線程結束的問題
- 26. Android的等待線程結束
- 27. 進程結束等待退出
- 28. 如何等待子進程結束
- 29. 當等待()結束時進程終止
- 30. 如何等待進程結束C++
+1的事件。 – NLV 2010-06-30 09:26:53
使+1 ++ :) – Apelsin 2013-05-24 06:04:47
絕對好的信息Process.Exited,但OP確實說「等待」 – 2014-06-25 18:07:34