async...await...
举个小例子
using System; using System.Threading.Tasks; using System.Threading; namespace ceshi { class Program { static void Main(string[] args) { Paint(); Console.Read(); } async static void Paint() { await Task.Run(() => { PaintAds(); Console.WriteLine("这里是Paint"); }); } async static void PaintAds() { await Task.Run(() => { Thread.Sleep(1000); Console.WriteLine("这里是PaintAds"); }); } } }
async和await一般是成对出现的,async表示这个函数是被异步调用的,await表示异步调用这个函数新开的线程必须等待Task新开的线程执行结束(可以通俗的理解为,Task.Run跑起来的代码就是调用函数Paint和PaintAds的函数体)
这样做的好处是,确定await修饰的代码跑完,并成功获取返回值,如:
using System; using System.Threading.Tasks; using System.Threading; namespace ceshi { class Program { static void Main(string[] args) { Paint(); Console.Read(); } async static void Paint() { string getAds =await PaintAds();//必须等await修饰的函数执行完才可以往下执行 await Task.Run(() => { Console.WriteLine("这里是Paint调用获取"+ getAds); }); } async static Task<string> PaintAds() { await Task.Run(() => { Thread.Sleep(1000); Console.WriteLine("这里是PaintAds"); }); return "Ads"; } } }