Example #1
0
        internal async Task ProcessLogQueue(object state)
        {
            var logItems = new List <LogItem>(200);

            while (!_cancellationTokenSource.IsCancellationRequested)
            {
                try
                {
                    _logQueue.GetReportedLogs(logItems);

                    if (logItems.Any())
                    {
                        await _logServiceClient.ReportAsync(logItems);
                    }
                    else
                    {
                        await Task.Delay(_options.TimeToSleepBetweenBatches, _cancellationTokenSource.Token);
                    }
                }
                catch (AccessTokenException e)
                {
                    if (Debugger.IsAttached)
                    {
                        Debug.WriteLine($"{e.Message}, {e.StackTrace}");
                    }

                    await Task.Delay(60000);
                }
                catch (Exception e)
                {
                    if (Debugger.IsAttached)
                    {
                        Debug.WriteLine($"{e.Message}, {e.StackTrace}");
                    }

                    await Task.Delay(60000);
                }
            }
        }