2012-03-25 22 views
1

私はICommunicationObject.Stateを使用してチャネルの状態を確認しています。 問題が開いた状態に変更されると、障害が発生したときに再び変更されないという問題があります。私は、接続をrecieveig後もAnnouncementClientをやり続けるICommunicationObject.Stateは更新されません

私は ...代わりに状態を使用しての私のコードのサンプルに 感謝

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; 

      } 
     } 
} 

答えて

0

を追加... それは意志ので、私はちょうどタイマーを変更もっと大きな間隔でAnnouncementClientを実行してください... これで失敗したら、再び間隔を減らします...

関連する問題