我有一个多线程应用程序,它使用一个简单的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()
答案 0 :(得分:0)
我无法找到解决方案。
在应用程序中部署一个WebBrowser然后创建另一个WebBrowser时,可能存在内部问题。
我的解决方案是修改我的代码以重新使用WebBrowsers而不是创建新的代码。 现在,在没有WebBrowsers Disposals之后,没有任何问题。