我編寫了一個異常處理程序例程,可以幫助我們發現我們的軟件問題。我使用C++異常處理程序問題
SetUnhandledExceptionFilter();
捕捉任何未捕獲的異常,它工作得很好。
但是我的處理程序彈出的一個對話框,詢問用戶細節,他們在崩潰的時候在做什麼。這是問題出現的地方,因爲對話與崩潰在同一個線程上下文中,對話框繼續抽取應用程序的消息。這會導致我一個問題,因爲我們的一個崩潰是在WM_TIMER中,每隔一分鐘就會關閉。正如你可以想象的那樣,如果對話已經在屏幕上超過了一分鐘,WM_TIMER就會被調度並且應用程序重新崩潰。在這種情況下重新進入異常處理程序是個壞消息。
如果我讓Windows處理崩潰,Windows會顯示出現起作用的對話,但停止傳播到應用程序的其餘部分的消息,因此WM_TIMER沒有得到重發。
有誰知道我怎樣才能達到同樣的效果?
感謝 豐富
好主意。這個單獨的應用程序然後可以進一步擴展,而無需擴展你的應用例如。發送郵件與信息,發佈信息的Web服務,... – Patrick 2010-02-19 10:22:20
我認爲推出一個單獨的進程將是最好的事情。通過這種方式,您甚至不必擔心異常會如此糟糕,以至於任何嘗試恢復它/顯示對話框/ ......都會導致進一步的損壞。您也可以考慮在啓動崩潰報告應用程序後凍結您的進程,以便它可以從「外部」創建核心轉儲,然後終止它。 – 2010-02-19 10:52:36
謝謝,目前創建一個線程已經解決了這個問題。不過,我可以看到創建過程的優勢。 – Rich 2010-02-19 11:30:21