我试图在任务并行库中了解 Task.WaitAll(..)。
我正在使用以下代码运行测试以尝试模拟两个任务,一个将运行比指定的等待时间长(10 秒)的时间(10 秒),另一个比指定的运行时间短(3 秒)等待的时间量。指定的时间量是 5 秒。我使用的代码如下:
Task<int>[] tasks = new Task<int>[]
{
Task.Factory.StartNew<int>(()=>
{
Thread.Sleep(10000);
return 1;
}),
Task.Factory.StartNew<int>(()=>
{
Thread.Sleep(3000);
return 2;
})
};
TimeSpan timeSpan = new TimeSpan(0, 0, 5);
Task.WaitAll(tasks,timeSpan);
int[] results = new int[tasks.Length];
for(int i = 0; i < tasks.Length;i++)
{
Console.WriteLine(tasks[i].Result);
}
至于timeSpan,我也试过直接传入5000而不是timeSpan变量,但它不起作用。我得到以下输出:
1
2
我希望只得到以下输出,因为另一个线程的执行时间比预期的等待时间长。
1
我误解了这一点,还是做错了这个测试?