2016-09-15 79 views
0

首先,對於問題標題感到抱歉,如果有更好的建議,我向他們開放。如何在啓動的應用程序失敗時關閉已啓動的應用程序?

我所做的是我有一個程序啓動一個可執行文件。我無法控制可執行文件。可執行文件可能會崩潰(然後選擇發送報告和所有內容)。

我需要做的是,如果它崩潰,那麼啓動它需要注意,並關閉可執行文件。

有沒有辦法讓這個控制?

+0

您是否在使用'Process.Start'啓動過程?錯誤是否回到標準錯誤?也許這樣的東西:http://stackoverflow.com/a/2709234/328193 – David

+0

什麼是這個可執行文件,它是一個控制檯應用程序?它失敗時會關閉嗎?它是否返回任何退出代碼? – sallushan

+0

如果它「崩潰」,是不是已經「關閉」? – HardCode

回答

4

如果你正在使用的Process.Start那麼你可以等待過程中使用Process.WaitForExit()來完成,像這樣:

var proc = Process.Start(...); 
proc.WaitForExit(); 

如果不推出與的Process.Start的過程,這是現有的過程那麼你可以先使用Process.GetProcessByNameProcess.GetProcessById,然後等待它。

值得注意的是,直到錯誤報告對話框被解除後纔會返回。

+0

thx !! WaitForExit是否知道它是否崩潰但保持打開狀態,操作系統窗口指示程序崩潰? – Cher

+0

不是,從技術上說,當對話框打開時,進程仍在運行,所以監視它的東西不會知道它崩潰,直到錯誤報告對話框被解除爲止 –

+0

僅供參考 - 「錯誤報告」是一個Windows功能,默認情況下處於啓用狀態被一個gpo禁用) - 它可以通過註冊表更改被禁用,但是如果它在客戶端機器上運行,通常不會對對話框有太多控制 –

相關問題