@gongzhen
2014-10-30T06:41:59.000000Z
字数 1371
阅读 2895
void Wait1(){Debug.WriteLine("start Wait1 - " + DateTime.Now);Task.Delay(5000);Debug.WriteLine("in Wait1 - " + DateTime.Now);}async void Wait2(){Debug.WriteLine("start Wait2 - " + DateTime.Now);await Task.Delay(5000);Debug.WriteLine("in Wait2 - " + DateTime.Now);}async Task Wait3(){Debug.WriteLine("start Wait3 - " + DateTime.Now);await Task.Delay(5000);Debug.WriteLine("in Wait3 - " + DateTime.Now);}
Wait1();Debug.WriteLine("out Wait1 - " + DateTime.Now);Wait2();Debug.WriteLine("out Wait2 - " + DateTime.Now);Wait3();Debug.WriteLine("out Wait3 - " + DateTime.Now);await Wait3();Debug.WriteLine("out await Wait3 - " + DateTime.Now);
start Wait1 - 2014/10/30 14:24:43in Wait1 - 2014/10/30 14:24:43out Wait1 - 2014/10/30 14:24:43start Wait2 - 2014/10/30 14:24:43“TaskDemo.exe”(CoreCLR: .): 已加载“C:\windows\system32\en-US\mscorlib.debug.resources.dll”。模块已生成,不包含符号。“System.ArgumentException”类型的第一次机会异常在 mscorlib.ni.dll 中发生“System.ArgumentException”类型的第一次机会异常在 mscorlib.ni.dll 中发生out Wait2 - 2014/10/30 14:24:45start Wait3 - 2014/10/30 14:24:45out Wait3 - 2014/10/30 14:24:45start Wait3 - 2014/10/30 14:24:45in Wait2 - 2014/10/30 14:24:48in Wait3 - 2014/10/30 14:24:50in Wait3 - 2014/10/30 14:24:50out await Wait3 - 2014/10/30 14:24:50
Wait1()由于内外都没有使用await关键字,所以内外都不会等待。
Wait2()由于内部使用await关键字,外部没使用,所以只有内部等待,外部会立即执行,不会等待;Wait2()产生异常不知是否和await关键字有关,需进一步调查。
Wait3()由于内部使用await关键字,外部没使用,所以只有内部等待,外部会立即执行,不会等待,同Wait2()。
await Wait3()由于内外都使用了await关键字,所以内外都会进行等待。