我已經簡化我對這個問題的緣故代碼,但基本上會發生什麼情況是這樣的:有沒有辦法讓我的應用程序等待腳本結束?
private void RunScript(string path)
{
Process.Start(path);
lblStatus.Text = "Step 6 Complete";
}
不過,我不希望標籤的文本,直到腳本運行完成更新做。那可能嗎?或者說,實際/可行?
我已經簡化我對這個問題的緣故代碼,但基本上會發生什麼情況是這樣的:有沒有辦法讓我的應用程序等待腳本結束?
private void RunScript(string path)
{
Process.Start(path);
lblStatus.Text = "Step 6 Complete";
}
不過,我不希望標籤的文本,直到腳本運行完成更新做。那可能嗎?或者說,實際/可行?
,如果你想要等待的最大時間一定量僅僅通過這個替換代碼:
Process.Start(path).WaitForExit(milli seconds);
或者這個,如果你想永遠有可能等待(通常直到它完成)
Process.Start(path).WaitForExit();
當進程已經開始增加,而環一做,這應該是
的Process.Start返回true,它
bool started = Process.Start(path)
您可以使用Process.Start(path).WaitForExit();那將......等待流程退出,然後再繼續。
如果這是在您的主UI線程上,但由於UI會凍結並且在工作時變得無響應,所以會變得殘缺不全。在BackgroundWorker或類似的步驟中關閉流程,並在成功完成(或必須處理錯誤)時更新/啓動第7階段。
我不知道那是一件事,我確信它會派上用場,但不幸的是,我正在編寫一個實用程序來幫助加速我們複雜的補丁部署/更新過程。每次執行更新時,將運行的腳本需要不同的時間,具體取決於正在更新的文件數量(有時只是一些小的重要內容,其他時間大量更新)。所以我認爲這不適用於這個特定的問題。 – sab669
@ sab669重載沒有超時值:http://msdn.microsoft.com/en-us/library/fb4aw7b8(v=vs.110).aspx – asawyer
毫秒是可選的,如果這是困擾您。我已經更新了我的答案。 –