public async Task Close() { if (Interlocked.Exchange(ref _state, _disposed) == _disposed) { return; } try { if (_stream != null) { _stream.Dispose(); _stream = null; } if (_socket != null) { _socket.Dispose(); _socket = null; } } catch (Exception) { } if (_receiveBuffer != null) { _bufferManager.ReturnBuffer(_receiveBuffer); } if (_sessionBuffer != null) { _bufferManager.ReturnBuffer(_sessionBuffer); } _log.DebugFormat("Session closed on [{0}] in dispatcher [{1}] with session count [{2}].", DateTime.UtcNow.ToString(@"yyyy-MM-dd HH:mm:ss.fffffff"), _dispatcher.GetType().Name, this.Server.SessionCount - 1); try { await _dispatcher.OnSessionClosed(this); } catch (Exception ex) { HandleUserSideError(ex); } }
public async Task Close() { if (Interlocked.Exchange(ref _state, _disposed) == _disposed) { return; } Clean(); _log.DebugFormat("Session closed on [{0}] in dispatcher [{1}] with session count [{2}].", DateTime.UtcNow.ToString(@"yyyy-MM-dd HH:mm:ss.fffffff"), _dispatcher.GetType().Name, this.Server.SessionCount - 1); try { await _dispatcher.OnSessionClosed(this); } catch (Exception ex) { await HandleUserSideError(ex); } }