在.net4.5之后。为了让异步变的更人性化。引入了两个关键字 async 和await.将异步操作从一大堆 beginInvoke 和 endInvoke中解脱出来。 步骤更加的简单。 1、定义一个需要异步的操作,通常是很占时间的操作:
private static Task<string> DoSomeThing(int second)
{
return Task.Run(() =>
{
Thread.Sleep(second * 1000);
return "延时了" + second + "秒";
});
}
注意:返回值必须为Task 2、定义一个异步函数,使用async标记,并在里面 await 需要异步的操作。
private static async void DoAndCallBack(int second)
{
string result = await DoSomeThing(second);
Console.WriteLine(result);
Console.WriteLine("这次是真的完成了");
}
在主线程调用 DoAndCallBack 时,await操作并不会阻塞主线程。而且,编译器会自动侦测await的上下文,将其视为异步操作完毕后需要调用的内容(即callback)。 3、主函数中,只需要调用此异步函数,就能自动开始异步操作。
DoAndCallBack(3);
Console.WriteLine("异步调用完毕,不必管它,继续做一些其它的事");
大脸兔大脸兔长胡须。