1. 程式人生 > >C# async/await異步變成深入理解

C# async/await異步變成深入理解

-s 需要 ask 最終 什麽 str 一個 class async

異步函數簡介

一般指 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>(int a) {
//... return null; }

註: await 最終操作的是一個值, 當然, 也可以是無值, 如上GetData() , 否則就是一個 Task<T> 如上: GetData<T>()

await執行過程

C# async/await異步變成深入理解