protected override async Task ExecuteAsync(CancellationToken stoppingToken) { var th = new Thread(async() => { WorkerLog.Instance.Information($"Starting {nameof(Host.BackgroundWorkers.FileDisassemblerWorker)}"); var incomingQueue = _workerQueueContainer.ToProcessFiles.Reader; var outgoingQueue = _workerQueueContainer.ToSendChunks.Writer; var taskRunner = new TaskRunner(_amountOfConcurrentJobs); while (await incomingQueue.WaitToReadAsync() && !stoppingToken.IsCancellationRequested) { var file = await incomingQueue.ReadAsync(stoppingToken); if (System.IO.File.Exists(file.GetFullPath())) { taskRunner.Add(() => DissasemblyJob(outgoingQueue, file)); } else { WorkerLog.Instance.Information($"File '{file.Path}' does not exist"); } } }); th.Start(); await Task.Delay(Timeout.Infinite); }
/// <inheritdoc /> public async Task Execute(ExecutionContext context) { if (context.IsSuccessful) { var raisedEvents = context.RaisedEvents.Union(new[] { context.Response as EventMessage }).Where(e => e != null).ToArray(); foreach (var instance in raisedEvents) { await _eventStore.Append(instance).ConfigureAwait(false); #pragma warning disable 4014 _tasks.Add(() => Task.Run(() => _messageGateway.Publish(instance, context))); #pragma warning restore 4014 } } }
protected async Task ExecuteAsync(CancellationToken stoppingToken) { var th = new Thread(async() => { WorkerLog.Instance.Information($"Starting {nameof(FileDisassemblerWorker)}"); var incomingQueue = _workerQueueContainer.ToProcessFiles.Reader; var outgoingQueue = _workerQueueContainer.ToSendChunks.Writer; var taskRunner = new TaskRunner(_amountOfConcurrentJobs); while (await incomingQueue.WaitToReadAsync() && !stoppingToken.IsCancellationRequested) { var file = await incomingQueue.ReadAsync(stoppingToken); if (System.IO.File.Exists(PathBuilder.BuildPath(file.Path))) { taskRunner.Add(async() => { //START OF SECTION TO REFACTOR TO METHOD WorkerLog.Instance.Information($"'{file.Path}' is being processed"); var recipients = await GetRecipients(file); if (recipients.Any()) { var eofMessage = await SplitFile(file, recipients, outgoingQueue); if (eofMessage is object) { await FinializeFileProcess(eofMessage, recipients); } WorkerLog.Instance.Information($"'{file.Path}' is processed"); } //END OF SECTION }); } else { WorkerLog.Instance.Information($"File '{file.Path}' does not exist"); } } }); th.Start(); await Task.Delay(Timeout.Infinite); }