2012-03-25 53 views
1

我正在使用ICommunicationObject.State來檢查通道狀態。 問題是,一旦它變成打開狀態,它在發生故障時不會再次更改。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也是我recieveig連接後... 我只是改變了計時器,這樣它會做更大的時間間隔的公告客戶端... 如果它失敗,所以我再次取下間隔...