Реализация параллельных тасков, не используя 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))
                        });
                    ) ; 
                }

но код ругается, что не хватает ")", хотя вроде все есть


Ответы (0 шт):