.NET實(shí)現(xiàn)異步編程async和await
await和async是.NET Framework4.5框架、C#5.0語(yǔ)法里面出現(xiàn)的,await和async是語(yǔ)法糖。
注意:
1、async出現(xiàn)在方法的聲明里面,任何一個(gè)方法都可以增加async。
2、await放在Task前面,async和await是成對(duì)出現(xiàn)的,只有async是沒(méi)有意義的,只有await是報(bào)錯(cuò)的。

只有async是沒(méi)有意義的。

只有await是報(bào)錯(cuò)的。
3、await 只能放在task前面,不推薦void返回值,使用Task來(lái)代替。Task和Task<T>能夠使用await, Task.WhenAny, Task.WhenAll等方式組合使用。Async Void 不行
private static async Task Return()
{
//主線程執(zhí)行
Console.WriteLine($"NoReturn Sleep before await,ThreadId={Thread.CurrentThread.ManagedThreadId}");
TaskFactory taskFactory = new TaskFactory();
Task task = taskFactory.StartNew(() =>
{
Console.WriteLine($"NoReturn Sleep before,ThreadId={Thread.CurrentThread.ManagedThreadId}");
Thread.Sleep(3000);
Console.WriteLine($"NoReturn Sleep after,ThreadId={Thread.CurrentThread.ManagedThreadId}");
});
//主線程到這里就返回了,執(zhí)行主線程任務(wù)
await task;
//這個(gè)回調(diào)的線程是不確定的:可能是主線程 可能是子線程 也可能是其他線程
Console.WriteLine($"NoReturn Sleep after await,ThreadId={Thread.CurrentThread.ManagedThreadId}");
}到此這篇關(guān)于.NET實(shí)現(xiàn)異步編程async和await的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
實(shí)現(xiàn)onmouseover和onmouseout應(yīng)用于RadioButtonList或CheckBoxList控件上
一直想實(shí)現(xiàn)onmouseover和onmouseout應(yīng)用于RadioButtonList或CheckBoxList控件上。此功能就是當(dāng)鼠標(biāo)經(jīng)過(guò)時(shí)RadioButtonList或CheckBoxList每一個(gè)Item時(shí),讓Item有特效顯示,離開(kāi)時(shí),恢復(fù)原樣有演示動(dòng)畫,感興趣的朋友可以了解下啊2013-01-01
.Net Core簡(jiǎn)單使用Mvc內(nèi)置的Ioc(續(xù))
怎樣直接獲取Ioc中的實(shí)例對(duì)象,而不是以構(gòu)造函數(shù)的方式進(jìn)行獲取呢?這篇文章繼續(xù)為大家介紹.Net Core簡(jiǎn)單使用Mvc內(nèi)置的Ioc2018-03-03
asp.net開(kāi)發(fā)微信公眾平臺(tái)之獲取用戶消息并處理
這篇文章主要介紹了asp.net開(kāi)發(fā)微信公眾平臺(tái)之獲取用戶消息并處理的相關(guān)資料,需要的朋友可以參考下2015-06-06
不可或缺的ASP.NET內(nèi)置對(duì)象小結(jié)
這篇文章主要介紹了不可或缺的ASP.NET內(nèi)置對(duì)象小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
Asp.net通過(guò)SignalR2進(jìn)行實(shí)時(shí)聊天
這篇文章介紹了Asp.net通過(guò)SignalR2進(jìn)行實(shí)時(shí)聊天的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
.Net項(xiàng)目在Docker容器中開(kāi)發(fā)部署
這篇文章介紹了.Net項(xiàng)目在Docker容器中開(kāi)發(fā)部署的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
.net數(shù)據(jù)庫(kù)操作框架SqlSugar的簡(jiǎn)單入門
這篇文章主要介紹了.net數(shù)據(jù)庫(kù)操作框架SqlSugar的簡(jiǎn)單入門,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下2021-04-04

