Я использую 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;
}
}
}