public void Dispose() { if (isDisposed) return; Disconnect(); isDisposed = true; isRunning = false; try { socket.Close(); } catch { } try { socket.Dispose(); } catch { } }