我在使用参数创建WCF服务实例时遇到问题。情况是在服务调用内部我无法创建第三方库COM对象(存在一些线程问题,并且此对象只能在主线程中创建)。因此,我想简单地维护一个在服务函数内创建的对象列表,让主线程做实际的对象创建工作。
但我不清楚如何将列表简单地传递给服务实例的构造函数。尽管我知道WCF,但我认为服务实例是由框架本身创建的,它不会在构造函数中使用任何参数。那么将此列表从主线程传递到服务实例的最简单方法是什么?谢谢!
答案 0 :(得分:2)
尝试玩:
System.ServiceModel.ServiceHost
System.ServiceModel.Activation.ServiceHostFactory
ServiceBehavior.InstanceContextMode
:
InstanceContextMode.Single
等分类范围字段:
public class Service : IService
{
private AnotherClass _a = new AnotherClass(); // maybe static?
}
它将在默认构造函数调用之前实例化,或者无论如何没有默认构造函数
答案 1 :(得分:1)
不要尝试将其传递给服务类构造函数。这可能会有问题,因为它会在服务类和COM类之间创建耦合。相反,只需通过静态列表属性或类似方法从服务方法中访问COM对象:
void MyServiceMethod()
{
List<MyCOMObject> myComObject = MyHelperClass.COMObjectsList //the list is created elsewhere;
...
}