public void Dispose() { if (_keepaliveThread != null) { _exitMutex.Set(); _keepaliveThread.Join(); _keepaliveThread = null; } if (_tcpClient != null) { _tcpClient.Close(); _tcpClient.Dispose(); _tcpClient = null; } }