我有一个运行一些 COM 对象的非单例 WCF(独立)服务。在非 WCF 环境中,使用 Thread.Start,这些 COM 对象在不同的线程中愉快地并行运行,利用所有 CPU 并在大约同一时间完成。
但是,当我尝试在特定的 WCF 服务中使用它们时,事情变得很奇怪。
当注册表中的ApartmentState设置为Both时,WCF 工作,但任务似乎是串行的,等待彼此的完成。CPU 使用率永远不会超过 1 个 CPU 的份额。就像它被迫在STA中运行一样。
当注册表中的ApartmentState设置为Free时,它会崩溃。
我只是不明白。这是某种管道阻碍吗?
我的 WCF 服务类具有以下属性:
[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any, InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Single)]
COM 对象是静态的/全局的。