Task三个列子的分享
這次要分享的是C#Task任務的幾個列子,感覺最實用的是封裝的分頁任務執行方法,這個方法步奏也是目前在我工作中執行多任務常用的,不知道各位也有這用的情況,那么開始吧。
1.順序任務執行
?View Code
上面的代碼中也備注了一些文字說明,其中有關鍵詞語及意思如下:
.Task.Factory.StartNew:創建一個Task實例,創建后自動開啟,無需在調用Start;
.ContinueWith:看單詞的意思就明了,是繼續的意思,在這里的效果也是等待上一個Task執行完畢了在繼續執行本次任務,這里方法里面每個任務是一層一層傳遞的
效果圖:
這里有個地方注意,sleep這是了5s但是這里使用Stopwatch統計出來只有4999ms,這個地方存在差異性,本章不解釋,有興趣朋友可以分享下或研究下。
?
2.并行任務效果
?View Code
關鍵詞語及意思如下:
.Func<object, int>這個是C#新增的特性,這個和Action最大的區別就是Func有返回值,其他的和Action相同任意長度參數個數和類型
.Task.WaitAll這個方法有幾個重載,這里用的是一個超時時間的方法,設置時間后在規定的時間就不繼續等待Task【】了,如果task【】在超時時間范圍內就執行完了,那么直接通過,不用再等待超時時間
效果:
這里依然有統計時間查問題,忽略
?
3.分頁任務執行方法
?View Code
測試代碼:
?View Code
?View Code
這里使用的是分頁的原理,把參數集合分發到創建的Task中,使用Task【】來處理這些數據,這里和第二個例子有點相識就多了分頁寫法而已,最后統計執行成功的條數,以此來返回給調用者,方便記錄日志,此方法目前是我經常使用的,不知道是否還有更好的,各位多多分享,謝謝。
效果圖:
轉載于:https://blog.51cto.com/kiujyhgt/1915984
總結
以上是生活随笔為你收集整理的Task三个列子的分享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DB2安全(一)——概述
- 下一篇: springMVC转发与重定向