将Parallel.For的动作添加到List<Task>

问题描述 投票:0回答:0

我想要实现的是如下所示

List<Task> tasks = new List<Task>();
Parallel.For(1, 5, async (x) =>
{
    Console.WriteLine($"blob {x} begin");
    await Task.Delay(TimeSpan.FromMilliseconds(10));
    Console.WriteLine($"blob {x} done");
    tasks.Add(this_async_action_itself);
});
await Task.WhenAll(tasks);

我以为

tasks.Add(this);
可能有用,但它没有。

我知道我可以做其他选择

List<int> list = new List<int>();
for (int i = 0; i < 5; i++)
{
    list.Add(i);
}
var tasks = list.Select(async item =>
{
    Console.WriteLine($"blob {item} begin");
    await Task.Delay(TimeSpan.FromMilliseconds(10));
    Console.WriteLine($"blob {item} done");
});
await Task.WhenAll(tasks);

或者在更高级别的框架中,我可以使用

Parallel.ForEachAsync

我只是觉得这应该是可行的,想知道语法。

c# async-await task-parallel-library
© www.soinside.com 2019 - 2024. All rights reserved.