Реализация параллельных тасков, не используя Task.Run
Не могу понять, как получить много тасков в цикле для функции, чтобы потом вернуть Task.WhenAll. Надо что то использовать вместо Task.Run, т.к. он съедает N потоков.
List<Task<Model>> models = new List<Task<Model>>();
foreach (var item in items)
{
foreach (var communityId in item.CommunityIds)
{
models.Add(Task.Run(() => ToContentItem(item, addresses.TryGetValueOrDefault(item.Id), chats.TryGetValueOrDefault(item.Id), communities.TryGetValueOrDefault(communityId))));
}
}
return await Task.WhenAll(models);
Чем можно заменить Task.Run?
Пытался сделать так:
foreach (var communityId in item.CommunityIds)
{
baseNewsContentItems.Add(new Task(() => {
ToContentItem(item, addresses.TryGetValueOrDefault(item.Id), chats.TryGetValueOrDefault(item.Id), communities.TryGetValueOrDefault(communityId))
});
) ;
}
но код ругается, что не хватает ")", хотя вроде все есть