void OnReceive(IAsyncResult result) { try { if (result.IsCompleted) { var bytesRead = Socket.EndReceive(result); if (bytesRead > 0) { var read = new byte[bytesRead]; Array.Copy(_buffer, 0, read, 0, bytesRead); _readHandler(this, read); Begin(Socket, _readHandler, _errorHandler); } } } catch (Exception e) { _errorHandler?.Invoke(this, e); } }