異步與并行(xing)~CancellationTokenSource對線(xian)程的(de)作(zuo)用
說起(qi)CancellationTokenSource我(wo)們(men)應(ying)該不(bu)會陌生,對于Thread,Task來說,我(wo)們(men)啟動一(yi)個(ge)線程去(qu)做(zuo)一(yi)些(xie)事,如果希望它在(zai)某(mou)個(ge)階(jie)段去(qu)被動的(de)停止(zhi),可以使用這(zhe)個(ge)CancellationTokenSource對象,把它注入(ru)到Task里,使用當(dang)外界觸發Cancel()方法時,你的(de)這(zhe)個(ge)線程就(jiu)會被取消了,挺(ting)好(hao)用,感覺應(ying)該是在(zai)Task內(nei)部封裝的(de)一(yi)種(zhong)方法回周(zhou)機制,在(zai)外部控制Task的(de)狀態!
看大(da)叔的測試代碼
CancellationTokenSource cancelTokenSource = new CancellationTokenSource(); Task.Run(() => { while (!cancelTokenSource.IsCancellationRequested) { Console.WriteLine(DateTime.Now); Thread.Sleep(5000); } }, cancelTokenSource.Token); Console.WriteLine("按任務(wu)鍵取消(xiao)這個任務(wu)"); Console.ReadLine(); cancelTokenSource.Cancel(); Console.WriteLine("已停止"); Console.ReadLine();
運行結果

通過微軟(ruan)對Task的封裝,我們有(you)了一些借(jie)鑒的地方,在設計一個(ge)框架時,如果希望(wang)為外界留一個(ge)接口,可以使用方法回(hui)調.
感謝各位的閱讀!
謝謝!