2014-03-25 82 views
0

我已經簡化我對這個問題的緣故代碼,但基本上會發生什麼情況是這樣的:有沒有辦法讓我的應用程序等待腳本結束?

private void RunScript(string path) 
{ 
    Process.Start(path); 
    lblStatus.Text = "Step 6 Complete"; 
} 

不過,我不希望標籤的文本,直到腳本運行完成更新做。那可能嗎?或者說,實際/可行?

回答

2

,如果你想要等待的最大時間一定量僅僅通過這個替換代碼:

Process.Start(path).WaitForExit(milli seconds); 

或者這個,如果你想永遠有可能等待(通常直到它完成)

Process.Start(path).WaitForExit(); 
當進程已經開始增加,而環一做,這應該是
+0

我不知道那是一件事,我確信它會派上用場,但不幸的是,我正在編寫一個實用程序來幫助加速我們複雜的補丁部署/更新過程。每次執行更新時,將運行的腳本需要不同的時間,具體取決於正在更新的文件數量(有時只是一些小的重要內容,其他時間大量更新)。所以我認爲這不適用於這個特定的問題。 – sab669

+1

@ sab669重載沒有超時值:http://msdn.microsoft.com/en-us/library/fb4aw7b8(v=vs.110).aspx – asawyer

+0

毫秒是可選的,如果這是困擾您。我已經更新了我的答案。 –

1

您可以使用Process.Start(path).WaitForExit();那將......等待流程退出,然後再繼續。

如果這是在您的主UI線程上,但由於UI會凍結並且在工作時變得無響應,所以會變得殘缺不全。在BackgroundWorker或類似的步驟中關閉流程,並在成功完成(或必須處理錯誤)時更新/啓動第7階段。

相關問題