1. 程式人生 > >C#跟著阿笨玩一起玩非同步Task實戰(一)

C#跟著阿笨玩一起玩非同步Task實戰(一)

一、課程介紹

本次分享課程屬於《C#高階程式設計實戰技能開發寶典課程系列》中的第一部分,阿笨後續會計劃將實際專案中的一些比較實用的關於C#高階程式設計的技巧分享出來給大家進行學習,不斷的收集、整理和完善此係列課程!

本高階系列課程適合人群如下:

1、有一定的NET開發基礎並對多執行緒技術有一定了解和認識。

2、喜歡阿笨的乾貨分享課程的童鞋們。

希望大家在選擇阿笨的 C#高階程式設計實戰技能開發寶典課程系列的時候,根據自身的情況進行選擇,由於本次課程不是零基礎教學課程系列,所以說.NET基礎差的到了沒朋友的地步話,那阿笨建議您還是先“學”好NET的一些基礎知識,然後在來C#跟著阿笨“玩”一起玩非同步Task實戰!

如果您同樣對本次分享《C#跟著阿笨玩一起玩非同步Task實戰》課程感興趣的話,那麼請跟著阿笨一起學習吧。

廢話不多說,直接上乾貨,我們不生產乾貨,我們只是乾貨的搬運工。

二、概念名稱含義解釋

2.1、多執行緒和非同步兩者的區別和聯絡?

一、區別:

1)、非同步適用範圍則是當需要執行I/O操作時。I/O操作包括了直接的檔案、網路的讀寫,還包括資料庫操作、Web Service、HttpRequest以及.net Remoting等跨程序的呼叫。

2)、執行緒適用範圍則是那種需要長時間CPU運算的場合,例如耗時較長的圖形處理和演算法執行。

但是往往由於使用執行緒程式設計的簡單和符合習慣,所以很多朋友往往會使用執行緒來執行耗時較長的I/O操作。

二、聯絡:

1)、多執行緒和非同步操作兩者都可以達到避免呼叫執行緒阻塞的目的,從而提高軟體的可響應性。

2)、非同步的本質也是多執行緒。

詳細關於兩者的區別和聯絡,推薦下面部落格:

三、非同步Task實戰例項分享

3.1)、C#使用非同步Task實現查詢等待Loading中效果。

3.2)、C#使用Task實現多工批量處理。

3.3)、C#如何優雅的將同步方法轉化為非同步方法。

3.4)、 C#如何以同步方式獲取非同步事件回撥的結果。

                1)、解決手段一: 通過 Task+AutoResetEvent機制實現非同步阻塞獲取非同步事件回撥的結果。

                2)、解決手段二:通過 Task +CancellationTokenSource( 課後請自行思考)

四、總結

如果您想更加全面的學習一下關於阿笨使用非同步Task技術在專案當中的實戰技能,推薦大家可以學習一下阿笨早期之前分享的《C#實戰技能之WebApi+Task+WebSocket》課程。俗話說的好:師父領進門修行在個人,希望大家在學習的道路上一直堅持下去!

五、原始碼線上學習和演示

相關推薦

C#跟著一起非同步Task實戰()

一、課程介紹 本次分享課程屬於《C#高階程式設計實戰技能開發寶典課程系列》中的第一部分,阿笨後續會計劃將實際專案中的一些比較實用的關於C#高階程式設計的技巧分享出來給大家進行學習,不斷的收集、整理和完善此係列課程! 本高階系列課程適合人群如下: 1、有一定的NET開發基礎並對多執行緒技術有一定了解和

智能小車34:匯編與C語言一起

vol -s c語言: 否則 rto 輸出 代碼 過程 看門狗 長時間寫java程序,但從來沒去研究main函數是如何執行的,今天學習嵌入式終於知道了原理。 之前看過一本30天做一個操作系統這本書,可以通過寫個2進制文件來啟動系統。然後進化到匯編語言,通過工具把匯編轉為

情侶一起的遊戲

clas 暑假 com 最好的 quest www plain 異地 intel ---恢復內容開始--- https://www.zhihu.com/question/24221947 異地戀,大學狗,暑假。 其實……啪啪啪是最好的選擇啊(?? . ??

樹莓派攝像頭直播程序,非常希望有貢獻者一起

pytho RR BE bubuko html 新聞 target .com 攝像頭 我也不知道要說什麽。git地址是 https://github.com/wuxie2015/raspberrypi_live 大家有興趣可以一起搞個大新聞 非常希望有貢獻者一起寫 是pyt

提升自動化效率,一起轉Selenium框架

第三方模塊 img 讓我 搭建 招聘 都是 一起 html 小白 以往項目組的聊天 測試工程師:已經把新的模塊測試完畢了,bug提交到bug庫(jira、TFS、禪道)中了。請根據bug描述修改bug,然後我在回歸。 開發工程師:好的。 測試工程師:你寫的這個模塊bug好

selenium和PhantomJS 不再是一起的小夥伴了

UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead  //現在流行這樣了 options

我的世界個人娛樂服,有一起的點進來

現在各種遊戲層出不窮,讓人眼花繚亂.其實,玩遊戲只需要開心就好.我的世界是一款積木遊戲.完全自己決定世界該是什麼樣子.這裡沒有任務,沒有副本.甚至都用不到金幣.一切決定於你.一言不合就搭了個伺服器.歡迎來玩.伺服器版本:1.7.5伺服器地址:kixijo.com:7000客戶端下載:https://pan.b

通俗易懂,C#如何安全、高效地轉任何種類的內存之Span。

能夠 msd 耗時 意思 重要 overflow 參考 github 聯網 前言 作為.net程序員,使用過指針,寫過不安全代碼嗎? 為什麽要使用指針,什麽時候需要使用它? 如果能很好地回答這兩個問題,那麽就能很好地理解今天了主題了。C#構建了一個托管世界,在這個世界裏,只

通俗易懂,C#如何安全、高效地轉任何種類的記憶體之Span(二)。

前言 讀完上篇《通俗易懂,C#如何安全、高效地玩轉任何種類的記憶體之Span(一)。》,相信大家對span的本質應該非常清楚了。含著金鑰匙出生的它,從小就被寄予厚望要成為.NET下編寫高效能應用程式的重要積木,而且很多老前輩為了接納它,都紛紛做出了改變,比如String、Int、Array。現在,它長大了,

一起"Docker"之1——Ubuntu配置安裝Docker執行環境並安裝(Ubuntu、Centos)映象

Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。 Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。 容器是完全使用沙箱機制,相互之間

CSS魔法堂:一起透偽元素和Content屬性

前言  繼上篇《CSS魔法堂:稍稍深入偽類選擇器》記錄完偽類後,我自然而然要向偽元素伸出“魔掌”的啦^_^。本文講講述偽元素以及功能強大的Contet屬性,讓我們可以通過偽元素更好地實現更多的可能! 初識偽元素  說起偽元素我第一想到的莫過於::before和::after這兩個了,它倆其實就是在其附屬的選擇

通俗易懂,C#如何安全、高效地轉任何種類的記憶體之Span

C# - Span 全面介紹:探索 .NET 新增的重要組成部分 前言 作為.net程式設計師,使用過指標,寫過不安全程式碼嗎? 為什麼要使用指標,什麼時候需要使用它? 如果能很好地回答這兩個問題,那麼就能很好地理解今天了主題了。C#構建了一個託管世界,在這個世界裡,只要不寫不安全程

通俗易懂,C#如何安全、高效地轉任何種類的記憶體之Memory<T>(三)

前言 我們都知道,.Net Core是微軟推出的一個通用開發平臺,它是跨平臺和開源的,由一個.NET執行時、一組可重用的框架庫、一組SDK工具和語言編譯器組成,旨在讓.Net developers可以更容易地編寫高效能的服務應用程式和基於雲的可伸縮服務,比如微服務、物聯網、雲原生等等;在這些場景下,對於記憶

今天定個小目標,用C語言實現三子棋的法。裡面有精彩情景故事幫助你更快理解程式碼內容,不進來了解一下嗎?(內附程式碼)

  如標題所示,今天我們要用C語言來實現三子棋的遊戲。相信大家都玩過這個遊戲。我們來回憶一下游戲步驟。   一、今天你在家裡看書,你的朋友小紅邀請你和她一起玩三子棋。這時你有兩個選擇。     1.接受她的邀請,在玩遊戲的同手,促進你們的感情。     0.殘忍

跟原力一起轉EOS原始碼-Push Transaction機制

EOS原始碼備忘-Push Transaction機制 這裡我們討論EOS Push Transaction 的邏輯,這塊EOS與Eosforce實現有一些區別,我們會著重點出。 關於wasm相關的內容我們會有一片專門的文件分析。 我們這裡通常將Transact

一起esp8266】flash的擦除方法

收到板子之後馬上連線電腦進行了試玩,但是韌體的執行不正常,在D大的指導下用擦除flash的方法解決了問題,在這裡把解決的方法整理一下。這個是之前發的問題帖:http://bbs.eeworld.com.cn/thread-497285-1-1.html 首先,我對於Pyth

跟我一起Win32開發(2):完整的開發流程

上一篇中我給各位說了一般人認為C++中較為難的東西——指標。其實對於C++,難點當然不侷限在指標這玩意兒上,還有一些有趣的概念,如模板類、虛基類、純虛擬函式等,這些都是概念性的東西,幾乎每一本C++書上都會介紹,而平時我們除了會接觸到純虛擬函式外,其他的不多用。純虛擬函式,

跟我一起Win32開發(21):複製&貼上&剪貼簿操作

我要提醒一下大家,看了我的博文學到的知識,千萬不要用於實際開發,不然你會被你的上司罵:“媽的,這些東西哪來的,從來沒有人這樣做過。”不信你試試,腦細胞被凍結的經理或者技術總監們肯定會這樣說的。 如果是一些有X年工作經驗(X永遠不可能大於100)的程式設計師肯定會說:“你怎麼

跟我一起轉Sencha Touch 移動 WebApp 開發(

1.目錄 移動框架簡介,為什麼選擇Sencha Touch?環境搭建建立專案框架,框架檔案簡介建立簡單Tabpanel案例自定義圖示的方式WebApp產品測試和釋出HTML5離線快取釋出成Android/IOS本地app應用 移動框架簡介,為什麼選擇Sencha Touch? 目前市面上,移動應用web框

跟我一起Win32開發(23):漸變顏色填充

GradientFill函式可以對特定的矩形區域或者三角形區域進行漸變顏色的填充。我們先來看看GradientFill函式到底長得什麼樣子,帥不帥。 BOOL GradientFill( _In_ HDC hdc, _In_ PTRIVERTEX pVertex