我正在使用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 :(得分:0)
而不是使用州...... 在我收到连接之后我也继续做AnnouncementClient ... 我只是更改了计时器,因此它会以更大的间隔执行AnnouncementClient ... 如果它失败了,我再次取消间隔......