public void Dispose() { if(_disposed) { return; } _disposed = true; lock(_syncroot) { foreach(var available in _availableSockets) { available.Socket.Dispose(); } _availableSockets.Clear(); } } }