.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);
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);
相关文章推荐
- .Net 4.5中通过CancellationTokenSource实现对超时任务的取消
- .Net 4.5中通过CancellationTokenSource实现对超时任务的取消
- C# 中通过CancellationTokenSource实现对超时任务的取消
- C# 中通过CancellationTokenSource实现对超时任务的取消
- C# CancellationTokenSource 终止线程 CancellationTokenSource实现对超时任务的取消
- 第七节:利用CancellationTokenSource实现任务取消和利用CancellationToken类检测取消异常。
- C#5.0 采用CancellationTokenSource方式取消Task
- 使用CancellationTokenSource来取消Task
- 一种利用线程池线程执行任务, 并能够结束超时任务的方法 (.NET实现)
- Quartz.NET 2.0 学习笔记(3) :通过配置文件实现任务调度
- C# CancellationTokenSource和CancellationToken的实现
- 协作式取消 CancellationTokenSource
- C# CancellationTokenSource和CancellationToken的实现
- 【C#】46. 使用CancellationTokenSource 取消 Task
- Quartz.NET 通过配置文件实现任务调度
- windows 服务实现定时任务调度(Quartz.Net)
- 可以通过基类实现的几种功能。vs2008 .net 2.0
- .net通过继承HttpModule类实现Url重写
- ASP.NET Web API实现微信公众平台开发(二)access_token与定时任务