public void ShutDown() { if (_shutdownInProgress) { return; } _shutdownInProgress = true; try { if (_socket != null) { _socket.Close(); } } // ReSharper disable EmptyGeneralCatchClause catch // ReSharper restore EmptyGeneralCatchClause { // TODO: why the swallow? } finally { _socket = null; } try { if (_host != null) { _host.Shutdown(); } // the host is going to raise an event that this class uses to null the field. // just wait until the field is nulled and continue. while (_host != null) { new AutoResetEvent(false).WaitOne(100); } } // ReSharper disable EmptyGeneralCatchClause catch // ReSharper restore EmptyGeneralCatchClause { // TODO: what am i afraid of here? } }
public void ShutDown() { _shutdownInProgress = true; try { if (_socket != null) { _socket.Close(); } } // ReSharper disable EmptyGeneralCatchClause catch // ReSharper restore EmptyGeneralCatchClause { } finally { _socket = null; } try { if (_host != null) { _host.Shutdown(); } while (_host != null) { Thread.Sleep(100); } } // ReSharper disable EmptyGeneralCatchClause catch // ReSharper restore EmptyGeneralCatchClause { } finally { _host = null; } }