所以,根据这个,我决定在专用STA线程上明确实例化一个COM对象。 实验表明,COM对象需要一个消息泵,我通过调用Application.Run()
来创建它:
private MyComObj _myComObj;
// Called from Main():
Thread myStaThread = new Thread(() =>
{
_myComObj = new MyComObj();
_myComObj.SomethingHappenedEvent += OnSomthingHappened;
Application.Run();
});
myStaThread.SetApartmentState(ApartmentState.STA);
myStaThread.Start();
如何从其他线程向STA线程的消息泵中发布消息?
注意: 出于简洁起见,我对问题进行了大幅编辑。 @Servy的一些答案现在似乎与原来的问题无关,但它们是针对原始问题的。
async/await
来实现并调用STA单元。 - noseratio - open to work