当前线程不在单线程单元中,因此无法实例化 ActiveX 控件的解决方案
2014-12-21 17:25
1246 查看
{"当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“3c33f325-cd56-4005-9e34-d0c6ab70b1eb”。"}
解决方案:
1、在主线程中实例化此ActiveX控件
2、将创建此Active控件的线程设定为单线程。
Thread.ApartmentState 获取或设置此线程的单元状态。
serviceFormThread = new Thread(MainFormMessageThread);
serviceFormThread.ApartmentState = ApartmentState.STA; //最关键的一句
serviceFormThread.Name = "InfraServiceThread";
serviceFormThread.Start();
当您启动托管的线程由默认线程不进入任何 COM 单元。 从线程进行第一个 COM 调用时,托管的线程隐式进入公寓。 默认,托管的线程进入多线程的单元 (MTA) 进程。 托管的线程进入 COM 单元后,它不能将保留,并输入另一个单元。 可以通过以下方法之一来使输入单线程单元 (STA) 的托管的线程:
应用程序的主方法上指定 [STAThread] 指令。 将此方法在执行时 ApartmentState 属性设置为该线程为STA 。
设置 System.Threading.ApartmentState.STA Thread.ApartmentState 。 这将导致线程输入一个 STA。 如果将 Thread.ApartmentState 设置为System.Threading.ApartmentState.MTA ,该线程将进入 MTA。
使用在 AspCompat ="true" ASPX 页上页指令,以使线程输入一个 STA中的属性。
解决方案:
1、在主线程中实例化此ActiveX控件
2、将创建此Active控件的线程设定为单线程。
Thread.ApartmentState 获取或设置此线程的单元状态。
serviceFormThread = new Thread(MainFormMessageThread);
serviceFormThread.ApartmentState = ApartmentState.STA; //最关键的一句
serviceFormThread.Name = "InfraServiceThread";
serviceFormThread.Start();
当您启动托管的线程由默认线程不进入任何 COM 单元。 从线程进行第一个 COM 调用时,托管的线程隐式进入公寓。 默认,托管的线程进入多线程的单元 (MTA) 进程。 托管的线程进入 COM 单元后,它不能将保留,并输入另一个单元。 可以通过以下方法之一来使输入单线程单元 (STA) 的托管的线程:
应用程序的主方法上指定 [STAThread] 指令。 将此方法在执行时 ApartmentState 属性设置为该线程为STA 。
设置 System.Threading.ApartmentState.STA Thread.ApartmentState 。 这将导致线程输入一个 STA。 如果将 Thread.ApartmentState 设置为System.Threading.ApartmentState.MTA ,该线程将进入 MTA。
使用在 AspCompat ="true" ASPX 页上页指令,以使线程输入一个 STA中的属性。
相关文章推荐
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件的解决方案
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件的解决方案
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件
- 类中调用界面ActiveX控件报错当前线程不在单线程单元中因此无法实例化 ActiveX 控件的解决办法
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件 解决
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96“
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件解决办法
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”
- 解决当前线程不在单线程单元中,因此无法实例化 ActiveX 控件的办法
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件解决办法
- Current thread must be set to single thread apartment (STA) mode before OLE,当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”。
- “当前线程不在单线程单元中,因此无法实例化 ActiveX 控件……” 的解决办法
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件
- .net winform 调用类中的webbrowser 报错:当前线程不在单线程单元中,因此无法实例化 ActiveX
- Message: 因为当前线程不在单线程单元中,故无法实例化 ActiveX 控件 错误处理方法
- 因为当前线程不在单线程单元中,故无法实例化ActiveX 控件
- WebBrowser 当前线程不在单线程单元中的错误
- (转)在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute标记。
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。