Warm tip: This article is reproduced from stackoverflow.com, please click
async-await asynchronous c# task

How to run many tasks and get their result after all of them ended?

发布于 2020-04-20 10:50:14

How can I obtain result(bool) of those Tasks?

public static Random rnd = new Random();

static void Main()
{
    var tasks = new Task[10];

    for (int i = 0; i < 10; i++)
    {
        tasks[i] = new Task(async () => await T());
    }

    Task.WaitAll(tasks);

    for (int i = 0; i < tasks.Length; i++)
    {
        Console.WriteLine($"Task {i} result = {tasks[i].?????????}");
    }

    Console.ReadKey();
}

public static async Task<bool> T()
{
    await Task.Delay(500);
    return rnd.Next(2) == 1 ? true : false;
}
Questioner
Joelty
Viewed
50
Pavel Anikhouski 2020-02-14 17:30

You can make Main() method async as well and use WhenAll instead of WaitAll. And use just T() when assign Task to array item, there is no need to do it like that new Task(async () => await T());

static async Task Main()
{
    var tasks = new Task<bool>[10];

    for (int i = 0; i < 10; i++)
    {
        tasks[i] = T();
    }

    await Task.WhenAll(tasks);

    for (int i = 0; i < tasks.Length; i++)
    {
        Console.WriteLine($"Task {i} result = {tasks[i].Result}");
    }

    Console.ReadKey();
}