公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C# 使用 CancellationTokenSource 終止線程

admin
2024年3月19日 11:22 本文熱度 1030

我們在多線程中通常使用一個bool IsExit類似的代碼來控制是否線程的運行與終止,其實使用CancellationTokenSource來進行控制更為好用,下面我們將介紹CancellationTokenSource相關用法。


C# 使用 CancellationTokenSource 終止線程

使用CancellationTokenSource對象需要與Task對象進行配合使用,Task會對當前運行的狀態進行控制(這個不用我們關心是如何孔控制的)。而CancellationTokenSource則是外部對Task的控制,如取消、定時取消。


下面我們來看看示例代碼:

class Program    {        //聲明CancellationTokenSource對象        static CancellationTokenSource cancelTokenSource = new CancellationTokenSource();         //程序入口        static void Main(string[] args)        {            Task.Factory.StartNew(MyTask, cancelTokenSource.Token);             Console.WriteLine("請按回車鍵(Enter)停止");            Console.ReadLine();             cancelTokenSource.Cancel();                        Console.WriteLine("已停止");            Console.ReadLine();        }         //測試方法        static void MyTask()        {            //判斷是否取消任務            while (!cancelTokenSource.IsCancellationRequested)            {                Console.WriteLine(DateTime.Now);                Thread.Sleep(1000);            }        }    }

Task.Factory.StartNew 創建并啟動了 MyTask 方法,并傳遞了一個 CancellationTokenSource.Token 對象進去。我們可以通過在外部CancellationTokenSource對象進行控制是否取消任務的運行。


當在 MyTask 中的 cancelTokenSource.IsCancellationRequested 判斷如果是取消了任務的話 就跳出while循環執行。也就結束了任務。 


我們還可以使用計時取消任務,當一個任務超過了我們所設定的時間然后自動取消該任務的執行。如下代碼所示:

var cancelTokenSource = new CancellationTokenSource(3000);

除了構造函數,我們還可以使用另外一種方式實現定時取消,如下代碼所示:

cancelTokenSource.CancelAfter(3000);

運行起來效果是一樣的,3秒鐘定時取消。

 


多個 CancellationTokenSource 復合

在有多個CancellationTokenSource需要一起并行管理的時候,比如任意一個任務取消 則取消所有任務。我們不必去一個一個的去關閉,只需要將需要一起并行關閉的CancellationTokenSource組合起來就行了。如下代碼所示,執行結果是跟上面的圖一樣的。我就不再上圖了。

class Program    {        //聲明CancellationTokenSource對象        static CancellationTokenSource c1 = new CancellationTokenSource();        static CancellationTokenSource c2 = new CancellationTokenSource();        static CancellationTokenSource c3 = new CancellationTokenSource();         //使用多個CancellationTokenSource進行復合管理        static CancellationTokenSource compositeCancel = CancellationTokenSource.CreateLinkedTokenSource(c1.Token, c2.Token, c3.Token);         //程序入口        static void Main(string[] args)        {            Task.Factory.StartNew(MyTask, compositeCancel.Token);             Console.WriteLine("請按回車鍵(Enter)停止");            Console.ReadLine();             //任意一個 CancellationTokenSource 取消任務,那么所有任務都會被取消。            c1.Cancel();                        Console.WriteLine("已停止");            Console.ReadLine();        }         //測試方法        static void MyTask()        {            //判斷是否取消任務            while (!compositeCancel.IsCancellationRequested)            {                Console.WriteLine(DateTime.Now);                Thread.Sleep(1000);            }        }    }

以上代碼調用了c1.Cancel();觸發了MyTask()方法中的compositeCancel.IsCancellationRequested為true,則取消了任務。所以我們在所有任務中判斷復合的這個CancellationTokenSource對象即可。


該文章在 2024/3/19 11:22:07 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产视频一区二区在线播放 | 国产v亚洲v天堂无码精品 | 1024国产精品自拍 | 丰满少妇高潮惨叫久久久一 | av午夜久久蜜桃传媒软件 | 国产成人精品一区二三区在线观看 | 成人免费一区二区三区视频 | 2025最新四虎永久免费一区 | av无码国产片在线播放波多 | 国产激情二区三区 | 精品国产免费人成电影在线看 | 国产日韩精品福利视频综合一区二区 | 国产av中文字幕乱码高清 | 国产午夜福利高清小视频合 | 国产日韩午夜三级无码专区直播 | 国产精品丝袜一区二区三区在线 | 国产午夜无码精品免费看性色 | 高潮毛片无遮挡高清免费软件 | 国产午夜精品福利久久 | 国产二级一片内射视频播放 | 国产亚洲日韩网曝欧美台湾 | 999久久欧美人妻一区二区 | 国产三级短视频在线观看 | 天天夜夜综合 | 91精品久久久久无码午夜福利 | 国产高清成人久久 | 国产精品一区二区在线观看网站 | 国产成人无码aⅴ片在线观看 | 国产精品美女挤奶视频 | 91系列在线观看免费 | 99精品久久久久久人妻精品 | 国产成人无码区在线观看流畅 | 国产精品欧美专区蜜臀 | 国产av女人一区二区精品 | 2025国精产品一二三四区 | 国产a爽一区二区久久久 | 99久久精品这里只有精品 | 国产精品一区二区亚洲精品 | 成人h动漫精品一区二区无 成人h动漫精品一区二区无码 | 丰满人妻一区二区三区免费视频 | 精品无码一区二区三区免费观看 |