国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

楊中科 .NETCORE 異步編程

這篇具有很好參考價(jià)值的文章主要介紹了楊中科 .NETCORE 異步編程。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、 為什么需要異步編程

楊中科 .NETCORE 異步編程,ASP.NET,.netcore

異步點(diǎn)餐的優(yōu)點(diǎn):能同時(shí)服務(wù)多個(gè)客人

異步點(diǎn)餐一定會(huì)提升單個(gè)客戶點(diǎn)餐速度嗎?
答案理所當(dāng)然:不能

圖片美化服務(wù)例子服務(wù)器能夠同時(shí)服務(wù)的請(qǐng)求數(shù)量有限

void BeautifyPic (File photo, Response response)
{
	byte[] bytes = 美化圖片(photo);
	response.Write(bytes):
}

楊中科 .NETCORE 異步編程,ASP.NET,.netcore
處理完成后再回調(diào),異步回調(diào)通知的。就可以同時(shí)處理更多的請(qǐng)求

傳統(tǒng)多線程開發(fā)太麻煩。C#關(guān)鍵字;
async、await。async、await不等于“多線程

二、async await 基本使用

“異步方法”:用async關(guān)鍵字修飾的方法
1、異步方法的返回值一般是Task,T是真正的返回值類型,Task。慣例: 異步方法名字以Async結(jié)尾。
2、即使方法沒有返回值,也最好把返回值聲明為非泛型的Task。
3、調(diào)用泛型方法時(shí),一般在方法前加上await關(guān),這樣拿到的返回值就是泛型指定的T類型
4、異步方法的“傳染性”:一個(gè)方法中如果有await調(diào)用,則這個(gè)方法也必須修飾為async(其他都是同步方法,只要有一句異步,這個(gè)方法就必須修飾未async)

static async Task Main(string[] args)
{
   string fileName = "d:/1.txt"File.Delete(fileName);
   File.WriteAllTextAsync(fileName, "hello async");
   string 	s = await File.ReadAllTextAsync(fileName);
   Console.Writeline(s);
}

試一試異步

新建控制臺(tái)應(yīng)用

楊中科 .NETCORE 異步編程,ASP.NET,.netcore
楊中科 .NETCORE 異步編程,ASP.NET,.netcore

同步方式

楊中科 .NETCORE 異步編程,ASP.NET,.netcore

運(yùn)行結(jié)果:

楊中科 .NETCORE 異步編程,ASP.NET,.netcore

異步方式

此時(shí)主方法需要改為

楊中科 .NETCORE 異步編程,ASP.NET,.netcore
楊中科 .NETCORE 異步編程,ASP.NET,.netcore

若去掉await

楊中科 .NETCORE 異步編程,ASP.NET,.netcore

此時(shí)文件 也能生成(留下疑問)

楊中科 .NETCORE 異步編程,ASP.NET,.netcore

讀取的兩種方式 ,第一種會(huì)自動(dòng)轉(zhuǎn)換(是第二種的兩句合并)
楊中科 .NETCORE 異步編程,ASP.NET,.netcore
不加await 運(yùn)行效果 是因?yàn)?寫入hello 字符得速度很快
嘗試加入 大字符
楊中科 .NETCORE 異步編程,ASP.NET,.netcore

運(yùn)行
楊中科 .NETCORE 異步編程,ASP.NET,.netcore

WriteAllTextAsync == 獨(dú)占式寫入==,正在寫的途中是不能 讀出數(shù)據(jù)
不寫await 是啟動(dòng)寫入后,不等寫完 就繼續(xù)執(zhí)行下面的語(yǔ)句

因?yàn)榈诙写a是異步,可能會(huì)先于第一行執(zhí)行,要么都異步,要么都同步

加入await之后:
楊中科 .NETCORE 異步編程,ASP.NET,.netcore

運(yùn)行結(jié)果:
楊中科 .NETCORE 異步編程,ASP.NET,.netcore

三、編寫異步方法

不帶返回值

楊中科 .NETCORE 異步編程,ASP.NET,.netcore

運(yùn)行:

楊中科 .NETCORE 異步編程,ASP.NET,.netcore

查看文件:
楊中科 .NETCORE 異步編程,ASP.NET,.netcore

帶返回值

楊中科 .NETCORE 異步編程,ASP.NET,.netcore
楊中科 .NETCORE 異步編程,ASP.NET,.netcore

運(yùn)行結(jié)果:

楊中科 .NETCORE 異步編程,ASP.NET,.netcore

【注意】
如果同樣的功能,既有同步方法,又有異步方法,那么首先使用異步方法。 .NET5中,很多框架中的方法也都支持異步:Main、WinForm事件處理函數(shù)。

對(duì)于不支持的異步方法怎么辦? Wait()(無返回值);Rest(有返回值)。
風(fēng)險(xiǎn):死鎖。盡量不用

winform中 異步方法得使用

同步方式

楊中科 .NETCORE 異步編程,ASP.NET,.netcore

運(yùn)行結(jié)果:
楊中科 .NETCORE 異步編程,ASP.NET,.netcore

異步方式

楊中科 .NETCORE 異步編程,ASP.NET,.netcore
運(yùn)行結(jié)果:
會(huì)報(bào)錯(cuò),winform 委托函數(shù)已經(jīng)規(guī)定了 返回值必須是void

修改會(huì)void
楊中科 .NETCORE 異步編程,ASP.NET,.netcore
運(yùn)行結(jié)果
楊中科 .NETCORE 異步編程,ASP.NET,.netcore

對(duì)于不支持異步得情況

假如說 只能調(diào)用異步的方法,Main 又不支持異步

result 方式

楊中科 .NETCORE 異步編程,ASP.NET,.netcore

運(yùn)行結(jié)果:
楊中科 .NETCORE 異步編程,ASP.NET,.netcore

await會(huì)暫時(shí)退出當(dāng)前函數(shù),result是阻塞當(dāng)前線程

wait 方式

楊中科 .NETCORE 異步編程,ASP.NET,.netcore
運(yùn)行結(jié)果:
楊中科 .NETCORE 異步編程,ASP.NET,.netcore

異步委托

ThreadPool.QueueUserWorkItem(async(obj) => {
await SomeAsync();
});

測(cè)試

楊中科 .NETCORE 異步編程,ASP.NET,.netcore

運(yùn)行:

楊中科 .NETCORE 異步編程,ASP.NET,.netcore

異步方式

楊中科 .NETCORE 異步編程,ASP.NET,.netcore

修改:異步的
楊中科 .NETCORE 異步編程,ASP.NET,.netcore

運(yùn)行結(jié)果:
楊中科 .NETCORE 異步編程,ASP.NET,.netcore文章來源地址http://www.zghlxwxcb.cn/news/detail-791751.html

到了這里,關(guān)于楊中科 .NETCORE 異步編程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 楊中科 .NETCORE EFCORE第七部分 一對(duì)一,多對(duì)多

    楊中科 .NETCORE EFCORE第七部分 一對(duì)一,多對(duì)多

    1、builder.HasOne(o =o.Delivery).WithOne(d=d.Order).HasForeignKey(d=dOrderId); 2、測(cè)試插入和獲取數(shù)據(jù) 示例 新建 Order 新建 Delivery DeliveryConfig OrderConfig 執(zhí)行 遷移命令 查看數(shù)據(jù)庫(kù) 測(cè)試數(shù)據(jù)插入 運(yùn)行查看數(shù)據(jù) 1、多對(duì)多:老師一學(xué)生 2、EF Core 5.0開始,才正式支持多對(duì)多 3、需要中間表,舉例數(shù)據(jù)

    2024年01月17日
    瀏覽(22)
  • 楊中科 .NETCORE ENTITY FRAMEWORK CORE-1 EFCORE 第一部分

    楊中科 .NETCORE ENTITY FRAMEWORK CORE-1 EFCORE 第一部分

    1、說明: 本課程需要你有數(shù)據(jù)庫(kù)、SOL等基礎(chǔ)知識(shí)。 2、ORM: ObjectRelational Mapping。讓開發(fā)者用對(duì)象操作的形式操作關(guān)系數(shù)據(jù)庫(kù) 比如插入: 比如查詢: 3、有哪些ORM: EF core(官方推薦)、Dapper、SqlSugar、FreeSql等 1、Entity Framework Core(EF Coxe)是微軟官方的ORM框架優(yōu)點(diǎn): 功能強(qiáng)大、官方支持、生

    2024年02月02日
    瀏覽(21)
  • .NetCore之log4net的使用

    .NetCore之log4net的使用

    1.首先下載log4ne的包: 2.添加配置文件log4net.config 3.添加日志幫助類 4.在服務(wù)中采用單例生命周期注入 5.添加全局異常過濾器 6.注入過濾器服務(wù) 7.使用 日志截圖:

    2024年02月11日
    瀏覽(25)
  • .Net 6/NetCore3.1 Vue Element Uniapp前后端分離低代碼快速開發(fā)框架

    .Net 6/NetCore3.1 Vue Element Uniapp前后端分離低代碼快速開發(fā)框架

    這是一個(gè)能提高開發(fā)效率的開發(fā)框架,全自動(dòng)生成PC與移動(dòng)端(uniapp)代碼;支持移動(dòng)ios/android/h5/微信小程序。 1、前后端分離項(xiàng)目 2、純后端項(xiàng)目 3、移動(dòng)端開發(fā)uni-app(IOS、Android、H5、微信小程序) 4、內(nèi)容管理系統(tǒng) 1、代碼生成器 2、一對(duì)一與一對(duì)多代碼生成 3、全自動(dòng)導(dǎo)入導(dǎo)出

    2024年02月10日
    瀏覽(24)
  • 楊中科 ASP.NET DI綜合案例

    楊中科 ASP.NET DI綜合案例

    1、目的:演示DI的能力; 2、有配置服務(wù)、日志服務(wù),然后再開發(fā)一個(gè)郵件發(fā)送器服務(wù)??梢酝ㄟ^配置服務(wù)來從文件、環(huán)境變量、數(shù)據(jù)庫(kù)等地方讀取配置,可以通過日志服務(wù)來將程序運(yùn)行過程中的日志信息寫入文件、控制臺(tái)、數(shù)據(jù)庫(kù)等。 3、說明:案例中開發(fā)了自己的日志、配置等

    2024年02月21日
    瀏覽(23)
  • ASP .net core微服務(wù)實(shí)戰(zhàn)(楊中科)

    ASP .net core微服務(wù)實(shí)戰(zhàn)(楊中科)

    背景: 主要是思考下,我們?yōu)槭裁匆梦⒎?wù)? 微服務(wù)我現(xiàn)在理解是:提供了我們一種模塊化的手段,一個(gè)服務(wù)負(fù)責(zé)一種類型的業(yè)務(wù),是一種面對(duì)復(fù)雜問題進(jìn)行拆分的方式,但是也會(huì)引入一些中間件,讓本來可能簡(jiǎn)單的東西,變的復(fù)雜一些,因?yàn)椋河辛瞬鸱志捅仨氂兄卫怼?/p>

    2024年01月20日
    瀏覽(15)
  • 楊中科 ASP.NET Core前后端分離開發(fā)

    楊中科 ASP.NET Core前后端分離開發(fā)

    前后端分離 1、傳統(tǒng)MVC開發(fā)模式: 前后端的代碼被放到同一個(gè)項(xiàng)目中,前端人員負(fù)責(zé)編寫頁(yè)面的模板,而后端開發(fā)人員負(fù)責(zé)編寫控制器和模型的代碼并且“套模板”。 缺點(diǎn): 互相依賴, 耦合性強(qiáng),責(zé)任劃分不清 。 2、主流的“前后端分離”: 前端開發(fā)人員和后端開發(fā)人員分別負(fù)

    2024年01月23日
    瀏覽(18)
  • netcore模型配置

    模型配置可以通過Fluent API和注解的方式 FluentAPI步驟 新建Products 和Category類 新建Products類 Products ? ? 新建Category類 Category 他們之間存在一對(duì)多的關(guān)系 配置實(shí)體屬性 Fluent API??配置一對(duì)一的關(guān)系 一對(duì)一關(guān)系表示兩個(gè)實(shí)體存在唯一的關(guān)系,每個(gè)實(shí)體只能關(guān)聯(lián)到另一個(gè)實(shí)體 新建

    2024年02月16日
    瀏覽(21)
  • netCore使用依賴注入

    依賴注入是一種常用的設(shè)計(jì)模式,用于解耦組件之間的依賴關(guān)系。通過依賴注入,我們可以將一個(gè)組件所依賴的其他組件的創(chuàng)建和管理工作交給容器來完成,從而實(shí)現(xiàn)組件之間的解耦和靈活性 .NET Core提供了內(nèi)置的依賴注入容器,使我們能夠輕松地實(shí)現(xiàn)依賴注入。下面是使用依

    2024年02月16日
    瀏覽(23)
  • netcore Identity(一)

    netcore Identity(一)

    asp.net Core Identity提供給我們一組工具包和API,能幫助我們應(yīng)用程序創(chuàng)建授權(quán)和認(rèn)證功能。也可以用它創(chuàng)建賬戶并使用用戶名和密碼進(jìn)行登錄,同時(shí)也提供了角色和角色管理功能。 1.創(chuàng)建項(xiàng)目 配置項(xiàng) nuget包 Microsoft.AspNetCore.Identity.EntityFrameWorkCore Microsoft.EntityFrameworkCore.Design Micros

    2024年02月16日
    瀏覽(13)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包