2012-07-13 4 views
0

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

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

ответ

0

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

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