C# 0x8013623选项卡更改错误,WebBrowser问题?

C# 0x8013623选项卡更改错误,WebBrowser问题?,c#,wpf,multithreading,C#,Wpf,Multithreading,我对WPF的网络浏览器控制有问题。当我更换标签时,这是一个名义上的错误——我想我知道原因(解释如下),但我想不出解决的办法。我正在寻找关于如何重新组织代码以正确工作的想法,或者关于我使用什么来实现我的目标的替代方案 该程序的设置如下:有多个选项卡,包含边框/网格等。在其中一个选项卡上,有一个网格,其中包含“小部件”,每个小部件包含一个WebBrowser。这些浏览器正在加载各种本地托管页面,其中包含用户的信息。为了使小部件看起来很好,一些代码在浏览器的LoadCompleted事件中运行 bro

我对WPF的网络浏览器控制有问题。当我更换标签时,这是一个名义上的错误——我想我知道原因(解释如下),但我想不出解决的办法。我正在寻找关于如何重新组织代码以正确工作的想法,或者关于我使用什么来实现我的目标的替代方案

该程序的设置如下:有多个选项卡,包含边框/网格等。在其中一个选项卡上,有一个网格,其中包含“小部件”,每个小部件包含一个WebBrowser。这些浏览器正在加载各种本地托管页面,其中包含用户的信息。为了使小部件看起来很好,一些代码在浏览器的LoadCompleted事件中运行

brow = new WebBrowser();
brow.LoadCompleted += wb_LoadCompleted;
(wb_LoadCompleted函数并不重要:程序在被调用时会崩溃,而不是在执行期间。)

此外,当用户更改选项卡时,这些小部件有一个Dispose函数,称为

brow.LoadCompleted -= wb_LoadCompleted;
brow.Source = null;
现在,如果用户使用这些小部件打开选项卡,那么在页面开始加载之后,但在它们完成加载并调用该事件之前,用户再次切换选项卡,程序将在尝试调用wb_LoadCompleted事件时崩溃。我认为这是因为错误。处理程序已被释放,因为选项卡已更改,但线程希望调用处理程序。在VisualStudio中,如果我在wb_LoadCompleted方法上放置一个断点,那么当抛出错误时,它将位于该断点上,因此我认为程序仍然知道它应该运行什么代码,它只是没有权限

到目前为止,我还无法找到解决办法。除了代码修复尝试之外,我还尝试使用不同的浏览器控件(Awesemonium和其他一些);虽然他们的工作没有这个错误,但他们也气球的大小,我们的程序分布30兆。这几乎是规模的两倍,我们这样做是不可行的。任何能正常工作的浏览器控件都很好,但它的最大值必须为10兆

我也可以分享一些其他代码,如果你让我知道你需要看什么;然而,如果这有意义的话,我认为这更像是一个时间/位置/顺序问题,而不是当前的代码问题

e;添加完整的错误文本:

托管调试助手“FatalExecutionEngineError”在-programpath中检测到问题-

其他信息:运行时遇到致命错误。错误地址位于线程0xa54上的0x6bd5e4ad。错误代码为0x8013623。此错误可能是CLR或用户代码的不安全或不可验证部分中的错误。此错误的常见来源包括COM互操作或PInvoke的用户封送错误,这可能会损坏堆栈