.net winform 调用类中的webbrowser 报错:当前线程不在单线程单元中,因此无法实例化 ActiveX


 

遇到这个恶心的问题纠缠得不要不要的,大家遇到了的话希望不要走弯路,经过这个折腾让我有点怀疑人生了。哈哈哈

解决代码如下:

//插入一个新线程用于处理验证码
Thread thd = new Thread(new ParameterizedThreadStart(ShowNotify));
thd.SetApartmentState(ApartmentState.STA);//关键设置
thd.IsBackground = true;
thd.Start();
thd.Join();//主线程等待,临时线程开始处理

//临时线程结束,主线程继续运行

 

/// <summary>
/// 弹出验证码提示框
/// </summary>
/// <param name="obj"></param>
private void ShowNotify(object obj)
{
var notify = new frmNotify(this);
diaResult = notify.ShowDialog();
strVcode = notify.StrVcode.Trim();
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



猜您在找 类中调用界面ActiveX控件报错当前线程不在单线程单元中因此无法实例化 ActiveX 控件的解决办法 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式 异常错误:在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute标记。 多线程操作剪切板的时候。 在可以调用OLE之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute 如何解决C#异常:必须先将当前线程设置为单线程单元(STA)模式,然后才能进行OLE调用,请确保你的Main函数已在其上标记了STAThreadAttribute 解决“System.Threading.ThreadStateException:“在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试程序附加到该进程才会引发此异常”的异常 C#解决“System.Threading.ThreadStateException:“在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试程序附加到该进程才会引发此异常”的异常
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM