您好,登錄后才能下訂單哦!
這次要分享的是C#Task任務(wù)的幾個(gè)列子,感覺最實(shí)用的是封裝的分頁任務(wù)執(zhí)行方法,這個(gè)方法步奏也是目前在我工作中執(zhí)行多任務(wù)常用的,不知道各位也有這用的情況,那么開始吧。
1.順序任務(wù)執(zhí)行
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ù)是一層一層傳遞的
效果圖:
這里有個(gè)地方注意,sleep這是了5s但是這里使用Stopwatch統(tǒng)計(jì)出來只有4999ms,這個(gè)地方存在差異性,本章不解釋,有興趣朋友可以分享下或研究下。
2.并行任務(wù)效果
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í)間
效果:
這里依然有統(tǒng)計(jì)時(shí)間查問題,忽略
3.分頁任務(wù)執(zhí)行方法
View Code
測試代碼:
View Code
View Code
這里使用的是分頁的原理,把參數(shù)集合分發(fā)到創(chuàng)建的Task中,使用Task【】來處理這些數(shù)據(jù),這里和第二個(gè)例子有點(diǎn)相識就多了分頁寫法而已,最后統(tǒng)計(jì)執(zhí)行成功的條數(shù),以此來返回給調(diào)用者,方便記錄日志,此方法目前是我經(jīng)常使用的,不知道是否還有更好的,各位多多分享,謝謝。
效果圖:
免責(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)容。