您的位置:首页 > 其它

.Net 4.5中通过CancellationTokenSource实现对超时任务的取消

2012-08-03 00:11 543 查看
在基于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);

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: