События не попадают в реализацию 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 на сервисный хост, и это единственный экземпляр. Я ценю любую помощь / понимание, которое может быть предоставлено о том, почему я не ссылаюсь на правильный экземпляр.

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 для вызова методов службы, все события были вызваны.

Другие вопросы по тегам