public async void Execute() { Debug.Assert(_connection != null); if (!_server._listening) { _connection.Close(); _connection = null; _socket = null; return; } try { await _server.Handler.HandleAsync(_connection); } catch (Exception ex) { Trace.WriteLine(ex, "UnobservedException"); } finally { _connection.Close(); _connection = null; _socket = null; if (_server._listening) { _receiveArgs.CleanUp(); _sendArgs.CleanUp(); try { Accept(); } catch (Exception ex) { Trace.WriteLine(ex, "UnobservedException"); } } } }