public async Task RunLogShipping() { while (true) { await Task.Yield(); if (!_remoteClient.IsConnected) { continue; } var outbound = _remoteClient.TryObtainOutboundReaderWriter(); if (outbound == null) { continue; } try { var logs = _logShipping.GetAndFlushLogs(); outbound.Writer.Write("logs"); outbound.Writer.Write((Int32)logs.Length); for (var i = 0; i < logs.Length; i++) { outbound.Writer.Write((Int32)logs[i].LogLevel); outbound.Writer.Write(logs[i].Message); } outbound.Writer.Flush(); } finally { _remoteClient.ReleaseOutboundReaderWriter(); } } }