1

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

但我不清楚如何简单地将列表传递给服务实例的构造函数。就我对 WCF 的了解而言,我认为服务实例是由框架本身创建的,它在构造函数中不带任何参数。那么将这个列表从主线程传递到服务实例的最简单方法是什么?谢谢!

4

2 回答 2

2

尝试玩:

  • 默认构造函数
  • 手动服务主机。继承自:
    • System.ServiceModel.ServiceHost
    • System.ServiceModel.Activation.ServiceHostFactory
  • ServiceBehavior.InstanceContextMode
    • InstanceContextMode.Single, ETC。
  • 类范围字段:

    public class Service : IService
    {
        private AnotherClass _a = new AnotherClass(); // maybe static?
    }
    

    它将在默认构造函数调用之前实例化,或者无论如何如果您没有默认构造函数

于 2012-06-08T08:21:33.063 回答
1

不要尝试将其传递给服务类构造函数。这可能会产生问题,因为它会在服务类和 COM 类之间产生耦合。相反,只需通过静态列表属性或类似属性从服务方法中访问 COM 对象:

void MyServiceMethod()
{
   List<MyCOMObject> myComObject = MyHelperClass.COMObjectsList //the list is created elsewhere;
   ...
}
于 2012-06-08T08:28:38.770 回答