private async Task RunInstance(int num, CancellationToken stoppingToken) { _logger.LogInformation($"Worker {num} запущен"); while (!stoppingToken.IsCancellationRequested) { var jobItem = await _myQueue.DequeueAsync(stoppingToken); try { _logger.LogInformation("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); _logger.LogInformation($"Задача #{num} взята в обработку. Размер очереди: {_myQueue.Size}"); // это делегат, который добавлен из контроллера await jobItem(stoppingToken); _logger.LogInformation("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); _logger.LogInformation($"Задача #{num} закончена. Размер очереди: {_myQueue.Size}"); } catch (Exception e) { _logger.LogError($"При работе с задачей {num} произошло исключение. Сообщение:"); _logger.LogError(e.Message); if (e.InnerException != null) { _logger.LogError("Внутреннее исключение:"); _logger.LogError(e.InnerException.Message); } _logger.LogError(e.StackTrace); } } _logger.LogInformation($"Worker {num} остановлен"); }