ICommunicationObject.State未更新

时间:2012-03-25 12:20:20

标签: wcf c#-4.0

我正在使用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;

           }
        }
}

1 个答案:

答案 0 :(得分:0)

而不是使用州...... 在我收到连接之后我也继续做AnnouncementClient ... 我只是更改了计时器,因此它会以更大的间隔执行AnnouncementClient ... 如果它失败了,我再次取消间隔......