コード例 #1
0
        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();
                }
            }
        }