.Net 4.5中通過CancellationTokenSource實現對超時任務的取消


在基於Task的任務執行過程中,我們通常使用CancellationTokenSource來實現任務取消,首先看一個簡單的例子。

    var cancelTokenSource = new CancellationTokenSource();

    Task.Factory.StartNew(() =>
    {
        while (!cancelTokenSource.IsCancellationRequested)
        {
            Console.WriteLine(DateTime.Now);
            Thread.Sleep(1000);
        }
    }, cancelTokenSource.Token);

    Console.WriteLine("Press any key to cancel");
    Console.ReadLine();
    cancelTokenSource.Cancel();
    Console.WriteLine("Done");
    Console.ReadLine();

很多時候,除了像上例中的那樣手動取消外,我們往往也要對任務設置一個預期執行時間,對超時的任務自動取消。之前一般做法是新啟動一個計時器,在計時器的超時回調中執行CancellationTokenSource.Cancel方法。在.Net 4.5中,該操作得到了進一步的簡化,我們可以通過在創建CancellationTokenSource時設置超時來實現這一功能。

    var cancelTokenSource = new CancellationTokenSource(3000);

除此之外,也可以通過如下代碼實現同樣的效果。

    cancelTokenSource.CancelAfter(3000);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM