2012-03-25 48 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连接后... 我只是改变了计时器,这样它会做更大的时间间隔的公告客户端... 如果它失败,所以我再次取下间隔...