Beispiel #1
0
        private async Task DisconnectAsync(Exception ex, bool isReconnecting)
        {
            if (State == ConnectionState.Disconnected)
            {
                return;
            }
            State = ConnectionState.Disconnecting;
            await _logger.InfoAsync("Disconnecting").ConfigureAwait(false);

            await _onDisconnecting(ex).ConfigureAwait(false);

            await _logger.InfoAsync("Disconnected").ConfigureAwait(false);

            State = ConnectionState.Disconnected;
            await Disconnected.InvokeAsync(this, new DisconnectedEventArgs(isReconnecting, ex)).ConfigureAwait(false);
        }
        private async Task OnClosed(Exception ex)
        {
            if (_isDisconnecting)
            {
                return; //Ignore, this disconnect was requested.
            }
            await _lock.WaitAsync().ConfigureAwait(false);

            try
            {
                await DisconnectInternalAsync(false).ConfigureAwait(false);
            }
            finally
            {
                _lock.Release();
            }
            await Disconnected.InvokeAsync(this, new SocketDisconnectedEventArgs(ex)).ConfigureAwait(false);
        }
 /// <summary>
 ///     Triggers the <see cref="Disconnected"/> event asynchronously.
 /// </summary>
 /// <param name="eventArgs">the event arguments</param>
 /// <returns>a task that represents the asynchronously operation.</returns>
 protected virtual Task OnDisconnectedAsync(DisconnectedEventArgs eventArgs)
 => Disconnected.InvokeAsync(this, eventArgs);