C# async/await非同步變成深入理解
阿新 • • 發佈:2018-11-13
非同步函式簡介
一般指 async 修飾符宣告得、可包含await表示式得方法或匿名函式。
宣告方式
非同步方法的宣告語法與其他方法完全一樣, 只是需要包含 async 關鍵字。async可以出現在返回值之前的任何位置, 如下示例:
async public static void GetInfoAsync() { //... } public async static void GetInfoAsync() { //... }public static async void GetInfoAsync() { //... }
非同步方法的返回型別
非同步函式的返回型別只能為: void、Task、Task<TResult>。
Task<TResult>: 代表一個返回值T型別的操作。
Task: 代表一個無返回值的操作。
void: 為了和傳統的事件處理程式相容而設計。
await(等待)
await等待的是什麼? 可以是一個非同步操作(Task)、亦或者是具備返回值的非同步操作(Task<TResult>)的值, 如下:
public async static void GetInfoAsync() { await GetData(); // 等待非同步操作, 無返回值 await GetData<int>(1); //等待非同步操作, 返回值 int } static Task GetData() { //... return null; } static Task<T> GetData<T>(inta) { //... return null; }
注: await 最終操作的是一個值, 當然, 也可以是無值, 如上GetData() , 否則就是一個 Task<T> 如上: GetData<T>()
await執行過程