Ich verwende ICommunicationObject.State, um den Kanalstatus zu überprüfen. Das Problem ist, dass es sich nach dem Ändern in den geöffneten Zustand nicht mehr ändert, wenn es fehlerhaft ist.ICommunicationObject.State ist nicht aktualisiert
habe ich eine Probe von meinem Code dank
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;
}
}
}