У меня есть процесс syn c, который должен выполняться на каждом из моих предприятий. Количество предприятий постоянно меняется.
Я читал документы о классе Thread, Parallelism..et c ... Я не уверен, что понимаю, как это сделать, не зная / называя заранее определенное количество потоков ... в этом случае это число неизвестно. По этой причине я нашел Parallel.ForEach ... потому что я sh могу запустить неизвестное количество одновременных операций
Мои операции syn c выполняются каждые 10 минут. Каждый из них занимает до минуты или двух, чтобы бежать. Очевидно, что я не могу запустить их итеративно, потому что к тому времени, когда они завершат sh, будет запущен следующий вызов.
Я хочу запустить их одновременно в отдельных потоках. Хотя каждый из них должен иметь уникальные ключи API, они не разделяют mem или данные и не будут изменять никакие общие данные.
Для этого я провел некоторое исследование о том, как выполнять многопоточность ... I Я думаю, что Parallel.ForEach сделает свое дело ...
Мне нужна помощь с синтаксисом ...
Это в рабочей службе ... У меня есть частный метод под названием SyncBusiness(int businessId)
, который вызывает конечную точку API, которая синхронизирует бизнес. Легко ... просто нужна помощь с вызовом метода?
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
var businessIds = (from x in _db.Poslookup
select x.BusinessId).Distinct();
while (!stoppingToken.IsCancellationRequested)
{
// Want to multi-thread a sync for each of the businesses in businessIds
Parallel.ForEach(businessIds, i => {
await SyncBusiness(i)
});
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
await Task.Delay(600000, stoppingToken);
}
}
Также, пожалуйста, прокомментируйте любые ошибки, касающиеся масштабируемости, ограничений потоков ... и т. Д. c .... любые области, в которые я могу попасть Беда, если бы я вырос до нескольких тысяч компаний, чтобы синхронизировать c ... возможно, предложения о том, что читать о syn c операциях и масштабируемости?
Большое спасибо. Приветствия.