void AcceptConnection(IAsyncResult asyncResult) { Socket connection = null; try { if (_disposed) { return; } connection = _socket.EndAccept(asyncResult); ReceiveFromConnection(connection); } catch (ObjectDisposedException) { } catch (Exception) { connection.CloseAndDispose(); } finally { if (!_disposed) { _socket.BeginAccept(AcceptConnection, null); } } }