怎样解决“当前线程不在单线程单元中,因此无法实例化 ActiveX 控件……”的问题

    科技2025-06-15  10

    在子线程中启动带控件的窗体,默认设置的情况下会提示“当前线程不在单线程单元中,因此无法实例化 ActiveX 控件……”的错误。

    原因是子线程默认是创建“MTA Thread 将创建并进入一个多线程单元”而非“STA Thread 将创建并进入一个单线程单元”。

    简单的解决方法是设置子线程为STA类型:

    Thread t = new Thread(new ThreadStart(delegate { //在新线程中要做的事。 WebBrowser browser = new WebBrowser(); })); t.SetApartmentState(ApartmentState.STA);//就是加上这段代码 t.IsBackground = true; t.Start();

    这样就轻松解决了问题。

    Processed: 0.012, SQL: 8