我如何获得这些任务的结果(布尔)?
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
并使用WhenAll
代替WaitAll
。并且只T()
在分配Task
给数组项时使用,所以不需要这样做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();
}