文章出處

返回目錄 

說起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的封裝,我們有了一些借鑒的地方,在設計一個框架時,如果希望為外界留一個接口,可以使用方法回調.

感謝各位的閱讀!

謝謝!

返回目錄 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()