锋利的C#

  程序员博客 :: 首页 :: 新随笔 :: 订阅 :: 管理 :: 登录 ::
访问csharp的空间

随笔分类

随笔归档

个人相册

阅读排行榜

评论排行榜

最新评论

csharp 阅读(1147) 评论(0)
static int Main(string[] args)
{
	Test();
    Console.WriteLine("Continue...");
}

async void Test()
{
	Console.WriteLine("Begin Test");
	for (int i = 0; i < 3; i++)
	{
		await TestTask(i);
	}
	Console.WriteLine("End Test");
}

Task TestTask(int num)
{
	return Task.Run(() =>
	{
		Console.WriteLine("Begin Task:" + num.ToString());
		Thread.Sleep(5000);
		Console.WriteLine("End Task:" + num.ToString());
	});
}


运行结果:
Begin Test
Continue...
Begin Task:0
End Task:0
Begin Task:1
End Task:1
Begin Task:2
End Task:2
End Test

 

从结果可以看出,主程序在调用标记了async的函数Test后是直接返回输出Continue...,
在Test内的await TestTask,开启异步子线程执行TestTask,顺序执行。

 

async并不是表明这个方法是异步方法,而是表明这个方法里有异步调用,真正重要的是await,他会同步等待异步调用的完成。


发表评论
切换编辑模式