async与await

在方法上可以加 async,方法体内需要有 await,没有await的话,会出现warn警告。async单独出现是没有用的。

await只能出现在Task前面。await Task的后面的代码会被封装成一个回调,等待 await Task执行完毕后调用,使用的线程是await Task的线程;而Task.Wait()不会。

await是创建一个子线程执行,而Task.Wait()是主线程等待Task完成,会卡主线程。

public static async void TestIt(){...await...}可以变为Task返回:public static async Task TestIt(){...await...}

如果 async 标注的方法是带返回值的Task,那么返回结果是Task<T>,T就是返回值的类型,被Task包裹了一层, 例如:Task<long> t = sum();long num = t.Result;//也可以用 t.Wait() 来得到。

原文地址:https://www.cnblogs.com/xsj1989/p/7839057.html