@gongzhen
2014-10-30T14:41:59.000000Z
字数 1371
阅读 2599
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:43
in Wait1 - 2014/10/30 14:24:43
out Wait1 - 2014/10/30 14:24:43
start 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:45
start Wait3 - 2014/10/30 14:24:45
out Wait3 - 2014/10/30 14:24:45
start Wait3 - 2014/10/30 14:24:45
in Wait2 - 2014/10/30 14:24:48
in Wait3 - 2014/10/30 14:24:50
in Wait3 - 2014/10/30 14:24:50
out await Wait3 - 2014/10/30 14:24:50
Wait1()由于内外都没有使用await关键字,所以内外都不会等待。
Wait2()由于内部使用await关键字,外部没使用,所以只有内部等待,外部会立即执行,不会等待;Wait2()产生异常不知是否和await关键字有关,需进一步调查。
Wait3()由于内部使用await关键字,外部没使用,所以只有内部等待,外部会立即执行,不会等待,同Wait2()。
await Wait3()由于内外都使用了await关键字,所以内外都会进行等待。