这是不可能的,BGW使用线程池线程。TP线程始终是MTA,无法更改。您将必须使用常规线程,在启动之前调用SetApartmentState()。此线程还应该泵送消息循环,调用Application.Run()。
也许您应该考虑从UI线程调用此代码。因为很有可能,COM服务器始终在UI线程上运行其方法。从工作线程到创建COM服务器的STA线程的封送调用是自动的,COM负责。
或以公牛欺负自己。您可以创建自己的STA线程,以使服务器拥有幸福的家。您将在本文中找到代码,请确保在您的Initialize()覆盖中创建COM对象。



