【问题标题】:WebBrowser control without a thread [duplicate]没有线程的WebBrowser控件[重复]
【发布时间】:2015-01-15 17:01:50
【问题描述】:

我没有在我的应用程序中使用任何线程,但我得到了这个异常:

附加信息:ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”无法实例化,因为当前线程不在单线程单元中。

当我在我的 Web 应用程序中初始化 WebBrowser 时。

WebBrowser wb = new WebBrowser();

这是我调用这个方法的正常流程。

Page_Load()
{
    TestWebBrowser("www.something.com")
}

static string TestWebBrowser(string url);
{
            WebBrowser wb = new WebBrowser();
            wb.ScrollBarsEnaenter code herebled = false;
            wb.ScriptErrorsSuppressed = true;
            wb.Navigate(url);
            while (wb.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); }

            mshtml.IHTMLDocument3 documentAsIHtmlDocument3 = (mshtml.IHTMLDocument3)wb.Document.DomDocument;

            var content = documentAsIHtmlDocument3.documentElement.innerHTML;
            return content ;
}

【问题讨论】:

  • Page_Load 只是我添加的一个示例方法。

标签: c# winforms


【解决方案1】:

将代码包装在 Try/Catch 块中,并为(希望)原因的异常/内部异常提供昆虫。

【讨论】:

  • 这也不好用。如果这是一个控制台/窗口应用程序,我研究了在 Main() 之前添加 [STAThread] 的多种解决方案,并且效果很好,但这种技术不适用于 Page_Load .
  • 我想,你应该删除 DoEvents()。
  • 兄弟!我在对象初始化中遇到错误。所以我认为删除 DoEvents() 不会影响
猜你喜欢
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-26
相关资源
最近更新 更多