我有一些像這樣的代碼:WaitForExit不會超時正確的,只是掛
process.CloseMainWindow();
if (!process.WaitForExit(5000)) { process.Kill(); }
的想法是優雅地讓進程退出,但如果需要超過5秒,我認爲它需要殺害。
這似乎在大多數情況下工作,但如果該進程已拋出一個Windows錯誤消息,它只是掛起。我以前只有「process.Kill()」,並且工作,所以我不得不假定它實際上停留在WaitForExit(5000)調用上,即使我給它一個超時值。
這會發生什麼原因?
編輯:我想知道如果可能它是CloseMainWindow()實際掛,因爲該錯誤消息。在這種情況下,在嘗試CloseMainWindow()方法之前檢查進程的「響應」屬性實際返回「false」?如果是這樣,我可以檢查,然後使用殺死,如果是這樣的話。
Windows正在終止進程,因此不會出現退出。 – jdweng
不,過程仍在運行,我可以看到錯誤框後面的窗口。 –
如果您遇到Marshal.GetLastWin32Error的窗口錯誤,那麼測試如何?如果進程正在運行,只殺死進程。在殺死之前測試過程是否仍然存在。 – jdweng