WinForm 中使用 WebBrowser 控件报错 '当前线程不在单线程单元中' 的解决方法
这个错误是因为在非单线程单元中实例化了一个 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 控件,解决报错问题。
原文地址: https://www.cveoy.top/t/topic/5LG 著作权归作者所有。请勿转载和采集!