标签:rgs nbsp pre async adk 就是 void tin 完成
.NET 中 如果一个Task A正在await另一个Task B,那么Task A是什么状态?答案是:WaitingForActivation
新建一个.NET Core控制台程序,输入如下代码:
class Program { static void Main(string[] args) { //启动outer task,然后在outer task里面启动inner task var outerTask = Task.Run(async () => { //await 之前执行 Console.WriteLine("Outer task began!"); //启动inner task var innerTask = Task.Run(() => { //inner task 的线程沉睡5秒 Thread.Sleep(5000); }); //输出outer task即将开始await Console.WriteLine("Outer task will await!"); await innerTask;//在outerTask的线程中await innerTask的Task线程 //await 完成之后执行 Console.WriteLine("Outer task will be finished!"); }); Thread.Sleep(1000);//主线程沉睡1秒,之后outer task的线程肯定开始执行了 Console.WriteLine($"Outer task status:{outerTask.Status.ToString()}");//检查outer task的状态,可以看到此时状态为WaitingForActivation Thread.Sleep(6000);//沉睡6秒,之后outer task和inner task的线程肯定结束执行了,也就是说outerTask和innerTask应该都结束了 Console.WriteLine($"Outer task status:{outerTask.Status.ToString()}");//再次检查outer task的状态,可以看此时状态为RanToCompletion Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Press key contiune..."); Console.ReadKey(); } }
执行结果如下:
所以如果一个task在await另一个task,那么其状态就是WaitingForActivation
.NET 中 如果一个Task A正在await另一个Task B,那么Task A是什么状态
标签:rgs nbsp pre async adk 就是 void tin 完成
原文地址:https://www.cnblogs.com/OpenCoder/p/9794938.html