最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#異步編程ConfigureAwait的使用小結(jié)

 更新時(shí)間:2025年08月10日 11:27:12   作者:gs108  
本文介紹了異步編程在GUI和服務(wù)器端應(yīng)用的優(yōu)勢(shì),詳細(xì)的介紹了async和await的關(guān)鍵作用,通過(guò)實(shí)例解析了在UI線程正確使用await.ConfigureAwait,及創(chuàng)建Task的不同方法,感興趣的可以了解一下

異步編程是并發(fā)的一種形式,它有兩大好處:

  • 對(duì)于面向終端用戶的GUI程序,提高了響應(yīng)能力
  • 對(duì)于服務(wù)器端應(yīng)用,利用線程池實(shí)現(xiàn)了可擴(kuò)展性

異步編程的兩個(gè)關(guān)鍵字:asyncawait。

需要注意:如果async方法有返回值,應(yīng)返回Task<T>;如果沒(méi)有返回值,應(yīng)返回Task。

嚴(yán)重警告:不要用void作為async方法的返回類型!async方法可以返回void,但這僅限于編寫事件處理程序。一個(gè)普通的async方法如果沒(méi)有返回值,要返回Task,而不是void。

有了上述背景知識(shí),我們來(lái)快速看一個(gè)例子:

async Task DoSomethingAsync()
{
	int val = 13; //以同步方式執(zhí)行
	// 異步方式等待1秒
	await Task.Delay(TimeSpan.FromSeconds(1));
	val *= 2;
	// 異步方式等待1秒
	await Task.Delay(TimeSpan.FromSeconds(1));
	Trace.WriteLine(val);
}

上述代碼,DoSomethingAsync方法在最開(kāi)始時(shí),以同步方式執(zhí)行。當(dāng)遇到await時(shí),如果這個(gè)異步等待操作沒(méi)有完成,就暫停DoSomethingAsync方法并返回這個(gè)Task,當(dāng)這個(gè)Task完成操作后,繼續(xù)以同步方式執(zhí)行后續(xù)的代碼。

問(wèn)題:如果在UI線程中調(diào)用DoSomethingAsync,這個(gè)方法的每個(gè)同步程序塊都將在此UI線程上運(yùn)行。怎么避免這種錯(cuò)誤行為呢?這就用到了await中的ConfigureAwait方法。

async Task DoSomethingAsync()
{
	int val = 13; //以同步方式執(zhí)行
	// 異步方式等待1秒
	// 將continueOnCapturedContext參數(shù)設(shè)為false,則會(huì)在線程池線程里繼續(xù)運(yùn)行
	await Task.Delay(TimeSpan.FromSeconds(1)).ConfigureAwait(false);
	val *= 2;
	// 異步方式等待1秒
	await Task.Delay(TimeSpan.FromSeconds(1));
	Trace.WriteLine(val);
}

關(guān)于異步方法,還有一條重要的準(zhǔn)測(cè):你一旦在代碼中使用了異步,最好一直使用。調(diào)用異步方法時(shí),應(yīng)該用await等待它返回的task對(duì)象。一定要避免使用Task.WaitTask<T>.Result方法,因?yàn)樗鼈儠?huì)導(dǎo)致死鎖。

有兩種基本的方法可以創(chuàng)建Task實(shí)例

  • Task.Run 創(chuàng)建計(jì)算類的任務(wù)(CPU實(shí)際執(zhí)行的指令)
  • TaskFactory.StartNew 需要特定的計(jì)劃運(yùn)行
  • TaskCompletionSource<T> 創(chuàng)建基于事件的任務(wù)(例如:大部分I/O任務(wù))

到此這篇關(guān)于C#異步編程ConfigureAwait的使用小結(jié)的文章就介紹到這了,更多相關(guān)C#異步ConfigureAwait內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • C#連接MySql數(shù)據(jù)庫(kù)的方法

    C#連接MySql數(shù)據(jù)庫(kù)的方法

    最近兩天在解決C#連接MySql數(shù)據(jù)庫(kù)的問(wèn)題,通過(guò)不同的從網(wǎng)上學(xué)習(xí),最終找到了解決的辦法,現(xiàn)在和大家分享一下
    2013-10-10
  • C#?as?和?is?運(yùn)算符區(qū)別和用法示例解析

    C#?as?和?is?運(yùn)算符區(qū)別和用法示例解析

    在C#中,as?和?is?關(guān)鍵字都用于處理類型轉(zhuǎn)換的運(yùn)算符,但它們有不同的用途和行為,本文我們將詳細(xì)解釋這兩個(gè)運(yùn)算符的區(qū)別和用法,需要的朋友可以參考下
    2025-01-01
  • C#和JavaScript實(shí)現(xiàn)交互的方法

    C#和JavaScript實(shí)現(xiàn)交互的方法

    最近做一個(gè)小項(xiàng)目不可避免的需要前端腳本與后臺(tái)進(jìn)行交互。由于是在asp.net中實(shí)現(xiàn),故問(wèn)題演化成asp.net中jiavascript與后臺(tái)c#如何進(jìn)行交互。
    2015-05-05
  • C#中的序列化與反序列化方式

    C#中的序列化與反序列化方式

    本文介紹了C#中的序列化和反序列化概念、目的及其在不同場(chǎng)景中的應(yīng)用,文章詳細(xì)講解了二進(jìn)制序列化、XML序列化和JSON序列化的方法和特點(diǎn),并提供了一些示例代碼
    2024-12-12
  • c# 泛型類型參數(shù)與約束的深入分析

    c# 泛型類型參數(shù)與約束的深入分析

    本篇文章是對(duì)c#中泛型類型參數(shù)與約束進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C#實(shí)現(xiàn)的海盜分金算法實(shí)例

    C#實(shí)現(xiàn)的海盜分金算法實(shí)例

    這篇文章主要介紹了C#實(shí)現(xiàn)的海盜分金算法,結(jié)合具體實(shí)例形式分析了海盜分金算法的原理與C#相應(yīng)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • C#代碼實(shí)現(xiàn)在PowerPoint中組合或取消組合形狀

    C#代碼實(shí)現(xiàn)在PowerPoint中組合或取消組合形狀

    在 PowerPoint 中,對(duì)形狀進(jìn)行組合和取消組合是兩個(gè)非常實(shí)用的功能,本文將介紹如何在 C# 和 VB.NET 中實(shí)現(xiàn) PowerPoint 形狀的組合與取消組合操作,希望對(duì)大家有所幫助
    2026-05-05
  • C#讀取CSV/Excel文件數(shù)據(jù)并顯示在DataGridView

    C#讀取CSV/Excel文件數(shù)據(jù)并顯示在DataGridView

    本文介紹了C#讀取CSV和Excel文件數(shù)據(jù)并展示在DataGridView控件中的解決方案,該方案包括文件讀取、數(shù)據(jù)處理、用戶界面、性能優(yōu)化等功能特點(diǎn),并提供了詳細(xì)的使用方法和常見(jiàn)問(wèn)題解決方案,旨在實(shí)現(xiàn)多格式支持、智能識(shí)別、強(qiáng)大數(shù)據(jù)處理和用戶友好界面
    2026-04-04
  • C#關(guān)于Textbox滾動(dòng)顯示最后一行,不閃爍問(wèn)題

    C#關(guān)于Textbox滾動(dòng)顯示最后一行,不閃爍問(wèn)題

    這篇文章主要介紹了C#關(guān)于Textbox滾動(dòng)顯示最后一行,不閃爍問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • C#利用VS中插件打包并發(fā)布winfrom程序

    C#利用VS中插件打包并發(fā)布winfrom程序

    這篇文章主要為大家詳細(xì)介紹了C#利用VS中插件打包并發(fā)布winfrom程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08

最新評(píng)論

重庆市| 栾川县| 濉溪县| 吉首市| 日照市| 双流县| 绍兴市| 荥经县| 玉溪市| 元朗区| 青河县| 绿春县| 石泉县| 沁水县| 蒙自县| 巨野县| 抚顺县| 西乡县| 平安县| 钟山县| 开平市| 漳平市| 平山县| 遂宁市| 辽宁省| 花莲市| 太康县| 讷河市| 台山市| 凤山市| 邵东县| 大厂| 南城县| 巴马| 龙口市| 绥滨县| 阆中市| 定西市| 德庆县| 富民县| 塘沽区|