Это выглядит странно:
var serviceProvider = services.BuildServiceProvider();
var tradeServiceProdiver = tradeServices.BuildServiceProvider();
var fileWatcher = serviceProvider.GetService<IHostedService>() as FileWatcherService;
var tradeWorker = serviceProvider.GetService<IHostedService>() as FailedTradesWorker;
Я бы использовал одного поставщика услуг и получил бы услуги по их типу:
var serviceProvider = services.BuildServiceProvider();
var fileWatcher = serviceProvider.GetService<FileWatcherService>();
var tradeWorker = serviceProvider.GetService<FailedTradesWorker>();
Или я бы создал интерфейсы, которые Я мог бы использовать вот так:
public interface IFileWatcherService : IHostedService
{
...
}
public interface IFailedTradesWorker : IHostedService
{
...
}
services.AddHostedService<IFileWatcherService, FileWatcherService>();
services.AddHostedService<IFailedTradesWorker, FailedTradesWorker>();
var fileWatcher = serviceProvider.GetService<FileWatcherService>();
var tradeWorker = serviceProvider.GetService<FailedTradesWorker>();