ocx 调用 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“bf7e992c-393f-4626-bcf5-bbab7f81b2dd”

类中调用界面ActiveX控件报错当前线程不在单线程单元中因此无法实例化 ActiveX 控件的解决办法

 

解决办法是Form类中定义一个静态的ActiveX对象,在class中将界面上的ActiveX对象赋值给新定义的对象,类中访问该静态对象即可.

 public static  Axhnisi_ssdkProj.Axhnisi_ssdk ssdkProj = new Axhnisi_ssdkProj.Axhnisi_ssdk();

 public int CallOCXService(string serverName = "")

{
var str = "";
// Axhnisi_ssdkProj.Axhnisi_ssdk ssdkProj = new Axhnisi_ssdkProj.Axhnisi_ssdk();
ssdkProj.CreateControl();
//开始初始化ocx对象
ssdkProj.BeginInit();
str = ssdkProj.GetJkxx();
// 结束初始化
ssdkProj.EndInit();
//将控件添加到host中
outputData = str;

}

posted @ 2021-05-27 13:27  尼哈  阅读(103)  评论(0编辑  收藏  举报