protected override void Dispose(bool disposing) { try { if (disposing) { // no timeout so that socket will close gracefully CloseSocket(); } } finally { base.Dispose(disposing); } }