簡體   English   中英

WaitForExit沒有正確超時,只是掛起

[英]WaitForExit not timing out correctly, just hangs

我有一些像這樣的代碼:

process.CloseMainWindow();
if (!process.WaitForExit(5000)) { process.Kill(); }

我們的想法是讓流程優雅地退出,但如果花費的時間超過5秒,我認為它需要被殺死。

這似乎在大多數情況下都有效,但如果進程拋出了一條Windows錯誤消息,它就會掛起。 我以前只有“process.Kill()”並且有效,所以我不得不假設它實際上卡在WaitForExit(5000)調用上,即使我給它一個超時值。

這會發生什么原因?

編輯:我想知道是否可能是由於該錯誤消息而實際掛起的CloseMainWindow()。 在這種情況下,在嘗試CloseMainWindow()方法之前檢查進程的“響應”屬性實際返回“false”? 如果是這樣,我可以檢查,然后使用Kill,如果是這樣的話。

首先,我要感謝Marc去做那件事的麻煩,我甚至都沒想到我會以這種方式重現錯誤。

無論如何,在仔細閱讀CloseMainWindow()的幫助文件后,我看到了這個:

Return Value
Type: System.Boolean
true if the close message was successfully sent; false if the associated 
process does not have a main window or if the main window is disabled (for 
example if a modal dialog is being shown).

所以就在那里它說模態對話框(例如我看到的錯誤)會導致這個問題。 現在我不確定它為什么不會掉線然后在超時后被殺死但是我想我可以使用這個返回值來殺死這個場景中的進程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM