我正在使用SolidEdge社區AddIn爲Solid Edge編程AddIn。使用此AddIn,應顯示包含網站的EdgeBar。AddIn中的CEFSharp - 「無法跨AppDomains傳遞GCHandle」
因爲我不想使用標準的Windows窗體WebBrowser控件(它僅使用了IE渲染引擎),我嘗試使用鉻嵌入式框架其.NET綁定CEFSharp(https://github.com/cefsharp/CefSharp)。
當創建新的Windows窗體應用程序時,嵌入CEFSharp控件就可以工作。但是,當我在我的外接程序代碼中嵌入它,我收到此錯誤之後開始的Solid Edge與外接程序啓動和程序崩潰後:
類型「System.ArgumentException」未處理的異常出現在mscorlib.dll
其他信息:無法跨AppDomains傳遞GCHandle。
我發現,應對在AppDomain-問題(https://github.com/cefsharp/CefSharp/issues/351)類似CEFSharp的問題,但我真的沒有看到我的問題的解決方案。
(注:目標框架是的.NET Framework 4.5,輸出類型類庫我使用Visual Studio 2013,編程語言是C#)。
正如你所讀過的限制是與'VC++實現'。您可以嘗試'RedGate.AppHost',如 https://github.com/cefsharp/CefSharp/issues/351#issuecomment-71495187中所述,或者您可以使用基於'Cef'框架的'P/Invoke'之一.Net – amaitland
這是GCHandle.FromIntPtr()引發的異常。通常由C++/CLI適配器中的gcroot <>模板包裝。堆腐敗是迄今爲止最常見的原因,當IntPtr受到攻擊時,節目結束。很難在託管應用程序中進行調試,因此無法設置數據斷點。 CEFSharp是「解決一個問題,增加三個難題」的解決方案。 –