73 lines
2.2 KiB
C#
73 lines
2.2 KiB
C#
using ConsoleApp2.HostedServices.Abstractions;
|
|
using ConsoleApp2.Services;
|
|
using Microsoft.Extensions.Hosting;
|
|
using Microsoft.Extensions.Logging;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace ConsoleApp2.HostedServices;
|
|
|
|
public class MainHostedService : BackgroundService
|
|
{
|
|
private readonly ILogger _logger;
|
|
private readonly IInputService _input;
|
|
private readonly ITransformService _transform;
|
|
private readonly IOutputService _output;
|
|
private readonly ProcessContext _context;
|
|
|
|
public MainHostedService(ILogger<MainHostedService> logger, IInputService input, ITransformService transform, IOutputService output, ProcessContext context)
|
|
{
|
|
_logger = logger;
|
|
_input = input;
|
|
_transform = transform;
|
|
_output = output;
|
|
_context = context;
|
|
}
|
|
|
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
|
{
|
|
|
|
|
|
var inputTask = Task.Factory.StartNew(async () =>
|
|
{
|
|
try
|
|
{
|
|
await _input.ExecuteAsync(stoppingToken);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_context.AddException(ex);
|
|
_logger.LogError("Exception occurred on inputService:{Message},{StackTrace}", ex.Message, ex.StackTrace);
|
|
}
|
|
|
|
});
|
|
var transformTask = Task.Factory.StartNew(async () =>
|
|
{
|
|
try
|
|
{
|
|
await _transform.ExecuteAsync(stoppingToken);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_context.AddException(ex);
|
|
_logger.LogError("Exception occurred on transformService:{Message},{StackTrace}", ex.Message, ex.StackTrace);
|
|
}
|
|
|
|
});
|
|
|
|
var outputTask = Task.Factory.StartNew(async () =>
|
|
{
|
|
try
|
|
{
|
|
await _output.ExecuteAsync(stoppingToken);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_context.AddException(ex);
|
|
_logger.LogError("Exception occurred on outputService:{Message},{StackTrace}", ex.Message, ex.StackTrace);
|
|
}
|
|
|
|
});
|
|
|
|
// await Task.Run(async () => await _output.ExecuteAsync(stoppingToken), stoppingToken);
|
|
}
|
|
} |