public async Task DisposeAsync() { using (await _mutex.LockAsync()) { if (_status != ConnectionListenerStatus.Disposed) { await DisposeCoreAsync(); _connectionReceived.OnCompleted(); _status = ConnectionListenerStatus.Disposed; } } }
public async Task StartAsync() { using (await _mutex.LockAsync()) { if (_status == ConnectionListenerStatus.Disposed) { throw new ObjectDisposedException(GetType().FullName); } if (_status == ConnectionListenerStatus.Inactive) { await StartCoreAsync(); _status = ConnectionListenerStatus.Active; } } }