public async Task CloseAsync(CancellationToken cancellationToken) { try { _listenerLock.WaitOne(); Status = CommunicationListenerStatus.Closing; var tasks = _listeners.Select(listener => CloseListener(listener.Key, listener.Value, cancellationToken)).ToList(); await Task.WhenAll(tasks); Status = CommunicationListenerStatus.Closed; } finally { _listenerLock.Set(); } }
public void Abort() { try { _listenerLock.WaitOne(); Status = CommunicationListenerStatus.Aborting; foreach (var listener in _listeners) { AbortListener(listener.Key, listener.Value); } Status = CommunicationListenerStatus.Aborted; } finally { _listenerLock.Set(); } }
public async Task<string> OpenAsync(CancellationToken cancellationToken) { try { ValidateListeners(); _listenerLock.WaitOne(); Status = CommunicationListenerStatus.Opening; var tasks = _listeners.Select(listener => Task.Run(async () => { await OpenListener(listener.Key, listener.Value, cancellationToken); }, cancellationToken)).ToList(); await Task.WhenAll(tasks); InitializeOnCreateListeningAddress(); Status = CommunicationListenerStatus.Opened; return string.Empty; } finally { _listenerLock.Set(); } }