.net 任务(Task)
生活随笔
收集整理的這篇文章主要介紹了
.net 任务(Task)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. Task (任務(wù)):
? ?很容易調(diào)用?ThreadPool.QueueUserWorkItem 實現(xiàn)異步操作,但是這個技術(shù)有許多
? ?.net 引入Task類型來使用任務(wù)。
? ?如下幾種方式都是實現(xiàn)異步的方法:
public static void Method(){ThreadPool.QueueUserWorkItem((o) => Console.WriteLine(""));//通過Start()來調(diào)度任務(wù)new Task(() => Console.WriteLine("")).Start();//通過Run方法 來調(diào)度任務(wù)Task.Run(() => Console.WriteLine(""));Task.Factory.StartNew(() => Console.WriteLine(""));}
a. 為了創(chuàng)建一個Task,需要調(diào)用構(gòu)造器并傳遞一個Action 或 Action<Object> 委托。這個委托就是你想執(zhí)行的代碼操作。
b. 如果調(diào)用Run 可以傳遞一個Action 或 Fun<Tresult> 委托。 兩種區(qū)別在于 Aciton 無返回值, Fun 有返回值
?
?2. 等待 任務(wù)完成并獲取結(jié)果:
public static void Method2(){//創(chuàng)建一個TaskTask<int> t = new Task<int>(n => Sum((int)n), 10);//啟動任務(wù) t.Start();//等待任務(wù)完成 t.Wait();//獲取結(jié)果Console.WriteLine("Sum is:{0}", t.Result);}private static int Sum(int n){int sum = 0;for (; n > 0; n--){checked { sum += n; }}return sum;}?
3. 取消任務(wù):
?CancellationTokenSource
?
Parallel 靜態(tài) For,ForEach和Invoke.
?Task.Run(async () => await Result);
轉(zhuǎn)載于:https://www.cnblogs.com/dragon-L/p/5399254.html
總結(jié)
以上是生活随笔為你收集整理的.net 任务(Task)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 定义method_pyth
- 下一篇: java线程池 锁_java多线程——锁