溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Task三個(gè)列子的分享

發(fā)布時(shí)間:2020-07-11 17:06:36 來源:網(wǎng)絡(luò) 閱讀:254 作者:26度出太陽 欄目:網(wǎng)絡(luò)安全

這次要分享的是C#Task任務(wù)的幾個(gè)列子,感覺最實(shí)用的是封裝的分頁任務(wù)執(zhí)行方法,這個(gè)方法步奏也是目前在我工作中執(zhí)行多任務(wù)常用的,不知道各位也有這用的情況,那么開始吧。

1.順序任務(wù)執(zhí)行

Task三個(gè)列子的分享 View Code

  上面的代碼中也備注了一些文字說明,其中有關(guān)鍵詞語及意思如下:

  .Task.Factory.StartNew:創(chuàng)建一個(gè)Task實(shí)例,創(chuàng)建后自動(dòng)開啟,無需在調(diào)用Start;

  .ContinueWith:看單詞的意思就明了,是繼續(xù)的意思,在這里的效果也是等待上一個(gè)Task執(zhí)行完畢了在繼續(xù)執(zhí)行本次任務(wù),這里方法里面每個(gè)任務(wù)是一層一層傳遞的

  效果圖:

  Task三個(gè)列子的分享

  這里有個(gè)地方注意,sleep這是了5s但是這里使用Stopwatch統(tǒng)計(jì)出來只有4999ms,這個(gè)地方存在差異性,本章不解釋,有興趣朋友可以分享下或研究下。

 

  2.并行任務(wù)效果

Task三個(gè)列子的分享 View Code

  關(guān)鍵詞語及意思如下:

  .Func<object, int>這個(gè)是C#新增的特性,這個(gè)和Action最大的區(qū)別就是Func有返回值,其他的和Action相同任意長度參數(shù)個(gè)數(shù)和類型

  .Task.WaitAll這個(gè)方法有幾個(gè)重載,這里用的是一個(gè)超時(shí)時(shí)間的方法,設(shè)置時(shí)間后在規(guī)定的時(shí)間就不繼續(xù)等待Task【】了,如果task【】在超時(shí)時(shí)間范圍內(nèi)就執(zhí)行完了,那么直接通過,不用再等待超時(shí)時(shí)間

  效果:

  Task三個(gè)列子的分享

這里依然有統(tǒng)計(jì)時(shí)間查問題,忽略

 

3.分頁任務(wù)執(zhí)行方法

Task三個(gè)列子的分享 View Code

  測試代碼:

Task三個(gè)列子的分享 View Code

Task三個(gè)列子的分享 View Code

  這里使用的是分頁的原理,把參數(shù)集合分發(fā)到創(chuàng)建的Task中,使用Task【】來處理這些數(shù)據(jù),這里和第二個(gè)例子有點(diǎn)相識就多了分頁寫法而已,最后統(tǒng)計(jì)執(zhí)行成功的條數(shù),以此來返回給調(diào)用者,方便記錄日志,此方法目前是我經(jīng)常使用的,不知道是否還有更好的,各位多多分享,謝謝。

  效果圖:

  Task三個(gè)列子的分享


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI