Async和Await非同步函式的示例分享

2021-10-14 07:48:12 字數 1924 閱讀 4544

async非同步是c#5.0時代引入的

本文主要分享,有返回值和無返回值的async非同步函式的編寫方式,以及await的使用。

這裡模擬了兩個耗時任務asyncmethod1和asyncmethod2,每個任務耗時5秒鐘。

public

static

void

asyncmethod1()

public

static

void

asyncmethod2()

呼叫

public

static

void

main

(string

args)

結果:在同步模式下,兩個任務執行於同乙個執行緒,前後相隔5秒鐘時間,這個沒什麼好說的。

但是現在有乙個需求,就是需要兩個任務同時執行,將原本加起來需要執行10秒鐘的時間縮減至5秒鐘,這時候就需要使用非同步的方式。

我們只需要將同步方法稍加修改,則會變成乙個非同步方法

public

async

static

void

asyncmethod1()

);}public

async

static

void

asyncmethod2());}

呼叫

public

static

void

main

(string

args)

結果:在非同步模式下兩個方法被同時呼叫,而且分別位於不同的執行緒之上

如果有3個方法需要被非同步執行,但是其他的兩個方法要等待方法一執行結束後,才能執行,這種場景下需要使用await阻塞當前某一方法,這個方法必須是返回task型別或者task《泛型》型別的

public

async

static

void

run(

)public

async

static

void

asyncmethod1()

);}public

async

static

void

asyncmethod2()

);}public

async

static

task

asyncmethod3());}

呼叫

public

static

void

main

(string

args)

結果

如果此方法是帶返回值的,返回型別為:task《返回值型別》

public

async

static

void

run(

)public

async

static task<

string

>

asyncmethod4

(int x1,

int y1));

return str;

}

呼叫

public

static

void

main

(string

args)

結果

以上,如果有錯誤,歡迎及時批評指正,感謝。。。

Async和Await 非同步方法

async和await關鍵字是c 非同步程式設計的核心。通過使用這兩個關鍵字,你可以使用.net framework或windows runtime的資源建立乙個非同步方法如同你建立乙個同步的方法一樣容易。通過使用async和await定義的非同步方法,這裡被稱為非同步方法。非同步方法的特點 方法中...

vue中非同步函式async和await

一,非同步函式async 1.1,async作為乙個關鍵字放到函式前面,用於表示函式是乙個非同步函式,因為async就是非同步的意思,非同步函式也就意味著該函式的執行不會阻塞後面 的執行。寫乙個async 函式。就是在函式前面加上async 關鍵字,來表示它是非同步的,那怎麼呼叫呢?async 函式...

非同步和等待 async和await

在.net 4.5中,通過async和await兩個關鍵字,引入了一種新的基於任務的非同步程式設計模型 tap 在這種方式下,可以通過類似同步方式編寫非同步 極大簡化了非同步程式設計模型。如下式乙個簡單的例項 static async void downloadstringasync2 uri ur...