解决“当前线程不在单线程单元中,因此无法实例化 ActiveX 控件”的问题
问题描述
当WinForm调用Windows Media Player播放器时,弹出以下错误:
原因
Framework运行COM组件时,为提高性能默认使用多线程,但有的COM组件不能使用多线程,否则就报错。
解决方法
创建一个新的线程时添加语句:thread.SetApartmentState(ApartmentState.STA);
什么是[STAThread]
什么是[STAThread]
[STAThread]
STAThread
:Single Thread Apartment Thread.(单一线程单元线程)[]
是用来表示Attributes[STAThread]
指示应用程序的默认线程模型是单线程单元 (STA)。启动线程模型可设置为单线程单元或多线程单元。如果未对其进行设置,则该线程不被初始化。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 go0d1uck's Blog!