这个错误是因为在非单线程单元中实例化了一个 ActiveX 控件。要解决这个问题,可以在程序的入口处添加以下代码:

using System;
using System.Threading;
using System.Windows.Forms;

static class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        // 在单线程单元中实例化 WebBrowser 控件
        var br = new WebBrowser();
        br.ScriptErrorsSuppressed = true;

        Application.Run(new MainForm(br));
    }
}

public class MainForm : Form
{
    private WebBrowser _webBrowser;

    public MainForm(WebBrowser webBrowser)
    {
        _webBrowser = webBrowser;
        // 其他控件初始化代码...

        // 在需要使用 WebBrowser 控件的地方,将传入的控件作为成员变量使用
        // var br = new WebBrowser();
        // br.ScriptErrorsSuppressed = true;

        // 其他代码...
    }
}

这样就能在单线程单元中正确实例化 WebBrowser 控件,解决报错问题。

WinForm 中使用 WebBrowser 控件报错 '当前线程不在单线程单元中' 的解决方法

原文地址: https://www.cveoy.top/t/topic/5LG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录