我目前正在玩微軟WebBrowser ActiveX控件,我注意到我可以通過加載一個崩潰嵌入式IE的網頁來凍結我的整個程序。 所以我想知道是否有辦法阻止整個程序被凍結?C++/MFC - 防止掛起的孩子(ActiveX)控制凍結整個用戶界面?
我已經嘗試過: - 創建一個新的CWinThread創建/處理控制 - >同樣的結果 - 從這個線程建立創建一個新的對話框/處理控制 - >同樣的結果
的問題似乎在消息系統中很深,但我不確定。
任何人都可以告訴我,如果它甚至可以防止整個UI /對話框凍結,並導致這個問題?
(我已在網上搜索,但我無法找到任何真正的解決辦法)
感謝名單,加里
PS:唯一的辦法,目前對我的作品是創建一個新的子進程加載/處理控制。我可以修改它,使它看起來像我的主對話框的子窗口,但這使我能夠直接從我的主對話框代碼訪問控件。
編輯:
好吧,我發現,我滿意的解決方案。我在主應用程序中創建一個佔位符窗口,並啓動一個包含實際控件的新子進程。我委託所有窗口移動/大小/等。消息傳遞給子進程,以便它可以重新定位/作出反應。 重要的是不要將我的主應用程序中的新進程創建爲WS_CHILD對象,因爲這樣它仍然會凍結它。 我通過內存映射與進程共享信息,並使用自定義用戶消息進行交流。 我希望它會更容易...
如果您創建一個新線程,那麼如果線程中的代碼崩潰,則不會保護應用程序的其餘部分。你可能有一個未處理的異常,這就是程序崩潰的原因。你必須確保你抓住並處理所有事情。如果你有硬件異常(除以0,訪問無效內存),你可以用結構化異常處理(http://msdn.microsoft.com/en-us/library/ms680657%28v=vs.85%)來捕獲和處理它們29.aspx)。 – 2011-05-12 17:50:40