带参数的WCF服务实例

时间:2012-06-08 08:15:47

标签: .net multithreading wcf

我在使用参数创建WCF服务实例时遇到问题。情况是在服务调用内部我无法创建第三方库COM对象(存在一些线程问题,并且此对象只能在主线程中创建)。因此,我想简单地维护一个在服务函数内创建的对象列表,让主线程做实际的对象创建工作。

但我不清楚如何将列表简单地传递给服务实例的构造函数。尽管我知道WCF,但我认为服务实例是由框架本身创建的,它不会在构造函数中使用任何参数。那么将此列表从主线程传递到服务实例的最简单方法是什么?谢谢!

2 个答案:

答案 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;
   ...
}