異步與並行~CancellationTokenSource對線程的作用
阿新 • • 發佈:2017-09-06
div lee ole png html cnblogs image can 就會
返回目錄
說起CancellationTokenSource我們應該不會陌生,對於Thread,Task來說,我們啟動一個線程去做一些事,如果希望它在某個階段去被動的停止,可以使用這個CancellationTokenSource對象,把它註入到Task裏,使用當外界觸發Cancel()方法時,你的這個線程就會被取消了,挺好用,感覺應該是在Task內部封裝的一種方法回周機制,在外部控制Task的狀態!
看大叔的測試代碼
CancellationTokenSource cancelTokenSource = new CancellationTokenSource(); Task.Run(()=> { while (!cancelTokenSource.IsCancellationRequested) { Console.WriteLine(DateTime.Now); Thread.Sleep(5000); } }, cancelTokenSource.Token); Console.WriteLine("按任務鍵取消這個任務"); Console.ReadLine(); cancelTokenSource.Cancel(); Console.WriteLine("已停止"); Console.ReadLine();
運行結果
通過微軟對Task的封裝,我們有了一些借鑒的地方,在設計一個框架時,如果希望為外界留一個接口,可以使用方法回調.
感謝各位的閱讀!
謝謝!
返回目錄
異步與並行~CancellationTokenSource對線程的作用