日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# Task 暂停与取消

發布時間:2023/12/4 C# 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# Task 暂停与取消 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:

①取消task任務之CancellationTokenSource的用法;

②task的線程管控方法Task..Wait(time),Task.WaitAll(),?Task.WaitAny(),task.ContinueWith.

1.聲明參數

?CancellationTokenSource?tokenSource?=?new?CancellationTokenSource();CancellationToken?token?=?tokenSource.Token;ManualResetEvent?resetEvent?=?new?ManualResetEvent(true);

2.定義Task

Task task = new Task(async () => {while (true) { if (token.IsCancellationRequested) {return;}// 初始化為true時執行WaitOne不阻塞resetEvent.WaitOne();// Doing something.......// 模擬等待100msawait Task.Delay(100);}}, token);task.Start();

3.暫停Task

resetEvent.Reset();

4.繼續Task

resetEvent.Set();

5.取消Task

tokenSource.Cancel();

實例:

#region TASK用法舉例static void TasKTest(){//帶返回值的taskTask<String> mytask = Task.Run(async () =>{await Task.Delay(5000);return "老鐵666";}, cancellationToken.Token);//cancellationToken.Cancel();while (!mytask.Wait(100)) //在指定時間執行完成就返回true{Console.Write(".");}Console.WriteLine(mytask.Result);//task任務取消,所以獲取task.Result會報錯Task taskFactory = Task.Factory.StartNew(() =>{Thread.Sleep(1000);Console.WriteLine("perfect!");});Console.WriteLine(taskFactory.Status);taskFactory.Wait();//taskFactory任務完成才往下執行Task.WaitAll(mytask, taskFactory);//所有任務完成再往下執行Task.WaitAny(mytask, taskFactory);//任一任務完成就往下執行Console.WriteLine(taskFactory.Status);Task taskTest = taskFactory.ContinueWith(DoOnSecond);//ContinueWith用法舉例}static void DoOnSecond(Task t){Console.WriteLine("task {0} finished", t.Id);Console.WriteLine("this task id {0}", Task.CurrentId);Console.WriteLine("do some cleanup");}#endregion

進技術交流群的,加小編微信zls20210502,切記備注:進群!

歷史經典文章回顧:以下都是以往閱讀量好,比較經典的篇章!(下面是超鏈接,點擊就可以過去)

C# 看懂這100+行代碼,你就真正入門了(經典)

C# WPF項目實戰(經典)

C# NOPI 項目實戰(經典)(可下載項目源碼)WPF【框架學習】MVVM初探(經典)

C# action,delegate,func的用法和區別

C#接口的作用(經典)

C# 三種方式實現Socket數據接收(經典)

C#實例(經典):四路光電開關&激光雷達數據采集和波形圖繪制

總結

以上是生活随笔為你收集整理的C# Task 暂停与取消的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。