WebBrowser问题 - 导航时出现InvalidOperationException

时间:2011-10-14 13:16:00

标签: c# browser

我有一个多线程应用程序,它使用一个简单的WPF窗口中托管的WebBrowser控件。

我第一次创建窗口并显示它 - 一切都很好。 但是 - 当我尝试打开它多次(通常在第三次......)时,我尝试调用WebBrowser的Navigate方法时获得了无效的操作异常。

我试过阅读一些关于它的内容,我认为它与DEP以及WebBrowser背后的COM对象有关。

我认为这可能与以前的WebBrowsers有关,所以我不得不以不同的方式处理它,例如:

brws.DocumentCompleted -= new System.Windows.Forms.
    WebBrowserDocumentCompletedEventHandler(brws_DocumentCompleted);
brws.Stop();
brws.DocumentText = "";
this.brws.Dispose();

但它没有帮助......

也许有人看到这个错误并知道如何解决它?

以下是确切的错误数据:

  

异常未处理:System.AccessViolationException:   System.AccessViolationException:尝试读取或写入受保护的   记忆。这通常表明其他内存已损坏。

     

AT-   System.Windows.Forms.UnsafeNativeMethods.IWebBrowser2.Navigate2(对象&安培;   U RL,对象&旗帜,对象& targetFrameName,Object&发布数据,   对象和放大器;头)

     

at-System.Windows.Forms.WebBrowser.PerformNavigate2(Object& URL,   对象和放大器; fla gs,Object& targetFrameName,Object& postData,Object&   头)

     

at-System.Windows.Forms.WebBrowser.PerformNavigateHelper(String   urlString,B oolean newWindow,String targetFrameName,Byte []   postData,String headers)

     

at-System.Windows.Forms.WebBrowser.Navigate(String urlString)

     

at- Slider.HtmlWindow..ctor(String url)at-   D:\ rapid \ Projects \ HTMLSlider \ Slide r \ HtmlWindow.xaml.cs:第24行

     

at- Slider.Program。<> c_ DisplayClasse.b _3()at-   D:\ rapid \ Projects \ HTMLSlider \ Slider \ Program.cs:第123行

     

at-System.Threading.ThreadHelper.ThreadStart_Context(Object state)

     

at-System.Threading.ExecutionContext.Run(ExecutionContext   executionContext,ContextCallback回调,对象状态)

     

at-System.Threading.ThreadHelper.ThreadStart()

1 个答案:

答案 0 :(得分:0)

我无法找到解决方案。

在应用程序中部署一个WebBrowser然后创建另一个WebBrowser时,可能存在内部问题。

我的解决方案是修改我的代码以重新使用WebBrowsers而不是创建新的代码。 现在,在没有WebBrowsers Disposals之后,没有任何问题。