public void StopDecrypting() { IsRunning = false; foreach (var stateObject in Sockets) { try { if (stateObject == null) { continue; } if (stateObject.Socket != null) { stateObject.Socket.Shutdown(SocketShutdown.Both); stateObject.Socket.Close(); stateObject.Socket.Dispose(); stateObject.Socket = null; } lock (stateObject.SocketLock) { stateObject.Connections = new List <NetworkConnection>(); } } catch (Exception ex) { RaiseException(Logger, ex); } } Sockets.Clear(); ServerConnections.Clear(); DroppedConnections.Clear(); }