我正在尝试在此示例中链接任务的执行:
static List<Task> clsTaskList = new List<Task>();
private static void Tasks2()
{
Task t1 = new Task(() =>
{
Console.WriteLine("Main task started.");
Thread.Sleep(15000);
Console.WriteLine("Main task finished");
});
Task t2 = new Task(() =>
{
Console.WriteLine("Task 2 started");
Thread.Sleep(15000);
Console.WriteLine("Task 2 finished");
});
clsTaskList.Add(t1);
t1.Start();
clsTaskList.Add(t2);
Task prevTask = clsTaskList.Last(p => p.IsCompleted == false);
prevTask.ContinueWith(t => t2.Start());
}
我要做的是将一个continue任务绑定到集合中的最后一个任务。但在该示例中,仅执行第一个任务。
当我检查集合时,第一个任务的状态为RanToCompletion
,但第二个任务的状态为Created
。我错过了什么吗?
答案 0 :(得分:4)
prevTask
t2
;你基本上说的是“当t2
完成时,开始t2
” - 显然不会发生。重要的是,在Last
运行时,任何任务都没有完成 - 所以有意义的是,尚未完成的“最后”任务是列表中的最后一个, t2
。
选项:
t1.ContinueWith
Task.WhenAny