public override void Close() { lock (lckObject) { try { BaseSocket.Shutdown(SocketShutdown.Both); } catch { } try { BaseSocket.Dispose(); } catch { } State = ConnectionState.Closed; SocketReceiveArgs.Completed -= socketArgsRecv_Completed; SocketSendArgs.Completed -= socketArgsSend_Completed; ReceivePool.Return(SocketReceiveArgs); SendPool.Return(SocketSendArgs); } }
protected virtual void Dispose(bool disposing) { if (disposing) { Disconnect(BaseSocket); BaseSocket.Dispose(); } }
/// <summary> /// Dispose current instance of the baseSocket if not null /// </summary> public void Dispose() { if (BaseSocket == null) { return; } IsRunning = false; lock (ConnectedClients) { foreach (var client in ConnectedClients) { client.Dispose(); } } ConnectedClients.Clear(); BaseSocket.Dispose(); BaseSocket = null; }
private bool disposedValue = false; // To detect redundant calls protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { // TODO: dispose managed state (managed objects). SubclassDispose(); SocketDataReader.Dispose(); SocketDataWriter.Dispose(); BaseSocket.Dispose(); } // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below. // TODO: set large fields to null. disposedValue = true; } }