C# 中通过CancellationTokenSource实现对超时任务的取消

来源:互联网 发布:阿里云邮箱客户端下载 编辑:程序博客网 时间:2024/06/09 00:09

在基于Task的任务执行过程中,我们通常使用CancellationTokenSource来实现任务取消,首先看一个简单的例子。

var cancelTokenSource = newCancellationTokenSource();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 = newCancellationTokenSource(3000);

除此之外,也可以通过如下代码实现同样的效果。

cancelTokenSource.CancelAfter(3000);


希望以上分享对初学朋友有些帮助,谢谢!更多关注付义方技术博客:http://blog.csdn.net/fuyifang

1 0
原创粉丝点击