2011-12-14 126 views
2

我們在我們的應用程序中使用TWebBrowser。如何抑制EAccessViolation終止異常(mshtml.dll)

對我的一些客戶計算機(IE9/Win7的)

我的應用程序終止後,它拋出一個異常:"Access violation at address XXXX in module 'mshtml.dll'. Read of address XXXX"與異常信息的無限循環......非常難看:/

這只是發生在極少數電腦(到目前爲止只有IE9/Win7)。 我無法在PC上重現此異常。

我也使用JclDebug這是我的主要dpr uses子句中定義的最後一個單元 - 它不捕獲此異常。

如何完全抑制此異常?

該應用程序是用D5編寫的。

+2

(只是一個簡單的提示:如果你遇到的問題在Delphi的最終化過程中,JCLDebug可能不會捕獲異常。更好地跟蹤問題的關鍵在於將錯誤移出最終化序列 - - 也就是說,在關閉自己之前銷燬網頁瀏覽器組件。) – 2011-12-14 17:17:06

+2

另外,在dpr中擁有JclDebug作爲最後一個單元意味着它將是最後一個初始化單元和第一個完成單元(除非在dpr之前有單元)它在它們的接口中使用子句,它將按照初始化順序將其向前移動並返回到最終順序)。將它作爲dpr中的第一個單元(在任何內存管理器之後)將有助於捕獲其他單元的初始化/終結中的錯誤。 – 2011-12-14 20:13:05

回答

4

瘋狂猜測...當你的應用程序在析構函數中,並且TWebBrowser(至少部分)被銷燬時,IE中會有一個回調(事件)。
您可以嘗試顯式釋放TWebBrowser早些時候,看看是否有任何事件處理程序,可能會浪費時間,一定要保存在窗體上使用的排放......

很難說,而無需代碼。