c 非同步程式設計

2021-10-05 01:11:16 字數 1061 閱讀 9644

c#中的async和await關鍵字是非同步程式設計的核心。通過使用這兩個關鍵字,你可以使用 .net framework 或者執行時的資源來創造非同步方法——幾乎和你寫同步方法一樣。你通過使用async和await定義的方法就相當於非同步方法。

// 在方法簽名中需要注意的三個地方:  

// - 方法必須有async修飾.

// - 返回型別必須是task或者task(看 "return types" 小節.)

// 這裡是task因為返回宣告返回了乙個整型.

// - 方法名以async結尾

async taskaccessthewebasync()

如果你使用async修飾符來定義乙個方法的話,方法就具有以下兩個功能:

​ async方法中的await造成的停止,不會導致方法的推出,並且finally語句塊不會執行。

乙個非同步方法通常包含乙個或者多個await操作符,但是await操作符就算不存在也不會造成編譯錯誤。如果乙個非同步方法沒有使用await操作符的話,整個方法就會和同步方法一樣,除了有乙個async操作符。編譯器會對這個方法發出乙個警告。

在.net framework中乙個非同步方法一般會返回乙個task 或者乙個 task型別。在非同步方法中,乙個await操作符應用在乙個從其他非同步方法返回的任務中。

如果方法包含指定了tresult型別的return 宣告,你可以定義乙個task作為返回值。

如果你的方法沒有返回宣告或者宣告中不返回操作符,你可以使用task作為返回值。

每乙個返回的task都代表乙個正在進行的工作。乙個task包括了這個非同步方法的執行狀態和最終的結果或者丟擲的異常。

乙個非同步方法也可以有乙個void的返回型別。這個返回型別主要在定義事件控制代碼的時候用到,對於定義事件控制代碼,void的返回型別是必須的。非同步事件控制代碼經常作為非同步程式的起點。

乙個void返回型別的非同步方法不能被await並且這個方法的呼叫者不能捕獲這個方法丟擲的異常。

乙個非同步方法不能宣告 ref 或者out 引數,但是這個方法可以呼叫包含這種型別引數的方法。

C 非同步程式設計

同步方法和非同步方法的區別 同步方法呼叫在程式繼續執行之前需要等待同步方法執行完畢返回結果 非同步方法則在被呼叫之後立即返回以便程式在被呼叫方法完成其任務的同時執行其它操作 非同步程式設計概覽 net framework 允許您非同步呼叫任何方法。定義與您需要呼叫的方法具有相同簽名的委託 公共語言執...

C 非同步程式設計

一 基礎知識 1 非同步程式設計 2 非同步方法 乙個程式呼叫某個方法,在處理完成前就返回該方法。同步和非同步主要用於修飾方法。當乙個方法被呼叫時,呼叫者需要等待該方法執行完畢並返回才能繼續執行,我們稱這個方法是同步方法 當乙個方法被呼叫時立即返回,並獲取乙個執行緒執行該方法內部的業務,呼叫者不用等...

C 非同步程式設計

定義要求 方法簽名包含 async 修飾符。按照約定,非同步方法的名稱以 async 字尾結尾。返回型別為下列型別之一 1.如果你的方法有運算元為 tresult 型別的返回語句,則為 task。2.如果你的方法沒有返回語句或具有沒有運算元的返回語句,則為 task。3.void 如果要編寫非同步事...