问题描述

当WinForm调用Windows Media Player播放器时,弹出以下错误:

原因

Framework运行COM组件时,为提高性能默认使用多线程,但有的COM组件不能使用多线程,否则就报错。

解决方法

创建一个新的线程时添加语句:thread.SetApartmentState(ApartmentState.STA);

什么是[STAThread]

[STAThread]
STAThread:Single Thread Apartment Thread.(单一线程单元线程)
[]是用来表示Attributes
[STAThread]指示应用程序的默认线程模型是单线程单元 (STA)。启动线程模型可设置为单线程单元或多线程单元。如果未对其进行设置,则该线程不被初始化。