2012-03-25 12 views
1

Ich verwende ICommunicationObject.State, um den Kanalstatus zu überprüfen. Das Problem ist, dass es sich nach dem Ändern in den geöffneten Zustand nicht mehr ändert, wenn es fehlerhaft ist.ICommunicationObject.State ist nicht aktualisiert

habe ich eine Probe von meinem Code dank

AnnouncementClient _client; 

void func1() 
{ 
     try 
     { 

      Monitor.Enter(_lock); 
      if (_isDiscoveryProxyConnected) 
      { 
       if (_client.InnerChannel.State == CommunicationState.Faulted) 
       { 
        _isDiscoveryProxyConnected = false; 
       } 

      } 

      else 
      { 
       _client = new AnnouncementClient(new AnnouncementEndpoint(binding, announcementEndPoint)); 
       foreach (var endpointDiscoveryMetadata in _endpoints) 
       { 
        _client.AnnounceOnline(endpointDiscoveryMetadata); 
        _discoveryProxyMetadata = endpointDiscoveryMetadata; 
       } 


       _isDiscoveryProxyConnected = true; 

      } 
     } 
} 

Antwort

0

Statt den Zustand der Verwendung ... ich weiterhin tun, AnnouncementClient auch nachdem ich Verbindung recieveig ... ich es ändern will nur den Timer so mache AnsageClient in größeren Intervallen ... wenn es nicht klappt nehme ich die Intervalle wieder runter ...