Экземпляр службы WCF с параметром

У меня возникла проблема с созданием экземпляра службы WCF с параметром. Ситуация внутри вызова службы. Я не могу создать COM-объект сторонней библиотеки (есть некоторая проблема с потоками, и этот объект может быть создан только в основном потоке). В результате я хочу просто поддерживать список объектов, которые должны быть созданы внутри сервисной функции, и позволить основному потоку выполнять фактическую работу по созданию объекта.

Но мне не ясно, как я могу просто передать список конструктору экземпляра службы. Как бы мало я ни знал о WCF, я думаю, что экземпляр службы создается самой инфраструктурой и не принимает никаких параметров в конструкторе. Так как же проще всего передать этот список из основного потока в экземпляр службы? Спасибо!


person tete    schedule 08.06.2012    source источник


Ответы (2)


Попробуйте поиграть с:

  • Конструктор по умолчанию
  • Manual service host. Inherit from:
    • System.ServiceModel.ServiceHost
    • System.ServiceModel.Activation.ServiceHostFactory
  • ServiceBehavior.InstanceContextMode:
    • InstanceContextMode.Single, etc.
  • Поля области класса:

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

    Он будет создан перед вызовом конструктора по умолчанию или в любом случае, если у вас нет конструктора по умолчанию.

person abatishchev    schedule 08.06.2012

Не пытайтесь передать его конструктору класса обслуживания. Это может быть проблематично, поскольку создает связь между классом обслуживания и классом COM. Вместо этого просто получите доступ к COM-объектам из методов службы через свойство статического списка или подобное:

void MyServiceMethod()
{
   List<MyCOMObject> myComObject = MyHelperClass.COMObjectsList //the list is created elsewhere;
   ...
}
person Eren Ersönmez    schedule 08.06.2012