在所有任务结束后,如何运行许多任务并获得结果?

问题描述:

如何获得这些任务的结果(布尔)?

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;
}

您也可以使 Main()方法 async 并使用 WaitAll .并且在将 Task 分配给数组项时仅使用 T(),就不需要像 new Task(async()=>等待T());

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();
}