连续任务
如果一个任务t1的执行是依赖于另一个任务t2的。那么就需要在这个任务t2执行完毕后才开始执行t1。这个时候我们就可以使用连续任务ContinueWith。
规定了任务先后执行的关系。
static void Main(string[] args)
{
Task t0 = new Task(DoFirst);
Task t1 = t0.ContinueWith(DoSecond);
Task t2 = t0.ContinueWith(DoSecond);
Task t3 = t1.ContinueWith(DoSecond);
t0.Start();
Console.ReadKey();
}
static void DoFirst()
{
Console.WriteLine("do in task: "+Task.CurrentId);
Thread.Sleep(3000);
Console.WriteLine(Task.CurrentId + " over");
Console.WriteLine();
}
static void DoSecond(Task t)
{
Console.WriteLine("task " + t.Id + " finished." + "this task id is " + Task.CurrentId + " Start");
Console.WriteLine();
Thread.Sleep(3000);
Console.WriteLine(Task.CurrentId + " over");
Console.WriteLine();
}
任务t0执行完之后t1和t2才开始执行。t1执行完,之后执行t3。
用await也可以实现。或者WaitAll
Console.WriteLine("开始 线程" + Thread.CurrentThread.ManagedThreadId);
var t = Task.Run(() =>
{
Console.WriteLine("进入 线程" + Thread.CurrentThread.ManagedThreadId);
});
Task.WaitAll(t);
Console.WriteLine("退出 线程" + Thread.CurrentThread.ManagedThreadId);