关闭包含WebBrowser的WPF UserControl时发生FatalExecutionEngineError

时间:2016-04-21 15:13:31

标签: c# .net wpf webbrowser-control

我有以下基本XAML:

<Window x:Class="SomeControl"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <WebBrowser x:Name="webBrowser"></WebBrowser>
    </Grid>
</Window>

当我试图关闭包含用户控件的标签时,我收到以下错误:

  

托管调试助手&#39; FatalExecutionEngineError&#39;已经检测到了   问题在于Some.vshost.exe&#39;。

     

其他信息:运行时遇到致命错误。该   错误的地址是0x7ba6a66f,在线程0x3bd0上。错误   代码是0x80131623。此错误可能是CLR或中的错误   用户代码的不安全或不可验证部分。这个的常见来源   错误包括COM-interop或PInvoke的用户封送错误   可能会破坏堆栈。

我试图调用WebBrowser.Dispose(),但它返回相同的错误

1 个答案:

答案 0 :(得分:2)

我们遇到了同样的问题。我们尝试手动处理控件,但问题仍然存在。最后,我们使用了来自System.Windows.Forms命名空间的WindowsFormsHost组件和WebBrowser。

<Window x:Class="SomeControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid x:Name="_webBrowserGrid>
</Grid>
</Window>

在代码中:

var host = new System.Windows.Forms.Integration.WindowsFormsHost();
System.Windows.Forms.WebBrowser _webBrowser = new System.Windows.Forms.WebBrowser();
host.Child = _webBrowser;
this._webBrowserGrid.Children.Add(host);

_webBrowser.Navigate("http://www.google.com");