protected virtual void Dispose(bool disposing) { // If you need thread safety, use a lock around these // operations, as well as in your methods that use the resource. if (!_disposed) { if (disposing) { if (client != null) { client.CloseConnection(client.GetSystemAddressFromIndex(0), true, 0); client.Dispose(); } if (socketDescriptor != null) { socketDescriptor.Dispose(); } if (receiveBitStream != null) { receiveBitStream.Dispose(); } if (sentBitStream != null) { sentBitStream.Dispose(); } } client = null; socketDescriptor = null; receiveBitStream = null; sentBitStream = null; _disposed = true; } }