在这个例子中,我尝试链接任务的执行:
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。我是不是遗漏了什么?
发布于 2013-07-16 17:06:57
当我运行prevTask时,它是t2;您基本上说的是“当t2完成时,启动t2”-所以很明显这不会发生。重要的是,在Last运行时,两个任务都没有完成-因此,没有完成的“最后”任务是列表中的最后一个任务t2是合理的。
选项:
Task.WhenAny的
https://stackoverflow.com/questions/17672196
复制相似问题