private async Task CloseInitiateAsync(CancellationToken token) { InstanceContext[] instances = ToArray(); for (int index = 0; index < instances.Length; index++) { InstanceContext instance = instances[index]; try { if (instance.State == CommunicationState.Opened) { Task result = instance.CloseAsync(token); if (!result.IsCompleted) { ContinueCloseInstanceContext(result); continue; } await result; } else { instance.Abort(); } } catch (ObjectDisposedException e) { DiagnosticUtility.TraceHandledException(e, TraceEventType.Information); } catch (InvalidOperationException e) { DiagnosticUtility.TraceHandledException(e, TraceEventType.Information); } catch (CommunicationException e) { DiagnosticUtility.TraceHandledException(e, TraceEventType.Information); } catch (TimeoutException e) { //if (TD.CloseTimeoutIsEnabled()) //{ // TD.CloseTimeout(e.Message); //} DiagnosticUtility.TraceHandledException(e, TraceEventType.Information); } } }