События не попадают в реализацию службы WCF

У меня есть интерфейс службы WCF, класс, который реализует контракт и хостинг-приложение winforms. Затем запускаются рабочие процессы, которые подключаются обратно к серверу WCF, а затем должны запускаться события. У рабочего процесса клиента нет проблем с вызовами методов, после чего я ожидаю, что прикрепленные обработчики событий будут вызываться и в приложении форм Windows, но этого не происходит:

                    xWCFService xWCFService = new xWCFService();
                    xWCFService.eventWorkerProcessStart += new EventHandler<WorkerProcessProgressChangedEventArgs>(xWCFService_eventWorkerProcessStart);
                    xWCFService.eventWorkerProcessStop += new EventHandler<WorkerProcessProgressChangedEventArgs>(xWCFService_eventWorkerProcessStop);
                    xWCFService.eventWorkerProcessUpdateProgress += new EventHandler<WorkerProcessProgressChangedEventArgs>(xWCFService_eventWorkerProcessUpdateProgress);
                    xWCFService.eventWorkerProcessError += new EventHandler<WorkerProcessProgressChangedEventArgs>(xWCFService_eventWorkerProcessError);


                    ServiceHost xServiceHost = new ServiceHost(xWCFService, new Uri(serviceAddress));

                    xServiceHost.AddServiceEndpoint(typeof(IxWCFServiceContract), new NetTcpBinding(), address);
                    xServiceHost.Open();

Я передаю экземпляр класса Service хосту службы, и это экземпляр singleton. Я ценю любую помощь/понимание, которое может быть предоставлено о том, почему я не ссылаюсь на правильный экземпляр.


person driverobject    schedule 13.07.2012    source источник


Ответы (1)


После долгого чтения я заметил свою ошибку в коде на стороне клиента:

            static xWCFService xwcfService = new xWCFService();

           ....
       {
            EndpointAddress endPoint = new EndpointAddress(new Uri(string.Format(xWCFServerBaseAddress, address) + address));
            Binding binding = new NetTcpBinding();
            xChannelFactory = new ChannelFactory<IxWCFServiceChannel>(binding, endPoint);
            xChannelFactory.Open();
            xServiceChannel = xChannelFactory.CreateChannel();
            xServiceChannel.Open();

            **xwcfService.WorkerProcessStartedParsing(strGuidClientIdentifier);**

Эта последняя строка была моей ошибкой, я вызывал вызовы службы через экземпляр класса реализации службы. Когда я использовал xServiceChannel для вызова методов службы, вызывались все события.

person driverobject    schedule 14.07.2012