【问题标题】:WebBrowser problems - InvalidOperationException when NavigatingWebBrowser 问题 - 导航时出现 InvalidOperationException
【发布时间】:2023-03-26 16:16:01
【问题描述】:

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

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

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

我认为可能与之前的 WebBrowsers 相关,所以我尝试以不同的方式处理它,例如:

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

但这并没有帮助......

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

这是确切的错误数据:

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

在- System.Windows.Forms.UnsafeNativeMethods.IWebBrowser2.Navigate2(对象& URL,对象和标志,对象和目标框架名称,对象和 postData, 对象和标题)

at- System.Windows.Forms.WebBrowser.PerformNavigate2(对象和 URL, 对象&标志、对象&目标帧名、对象& postData、对象& 标题)

at- System.Windows.Forms.WebBrowser.PerformNavigateHelper(字符串 urlString, Boolean newWindow, String targetFrameName, Byte[] postData,字符串标题)

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(对象状态)

at- System.Threading.ExecutionContext.Run(ExecutionContext executionContext、ContextCallback 回调、Object 状态)

at-System.Threading.ThreadHelper.ThreadStart()

【问题讨论】:

  • 竞争条件、停止和 DocumentText 是异步调用,您不希望后台线程完成。
  • 你是指浏览器的后台线程吗?我如何等待他们完成? (我怎么知道他们是否在运行......)
  • 在 DocumentCompleted 中做事。注意设置 DocumentText 会触发另一个 Navigate,您需要等待另一个 DocumentCompleted。调用 Dispose 后不要访问对象。

标签: c# browser


【解决方案1】:

我找不到解决办法。

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

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

【讨论】:

    猜你喜欢
    • 2019-02-08
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多