?
参考:http://www.cnblogs.com/scy251147/archive/2013/01/04/2843875.html
- static
void TaskWithCancellation() - {
- ????var cancellationTokenSource = new CancellationTokenSource();
- ????var cancellationToken = cancellationTokenSource.Token; //主要用于任务取消操作的信号量设置
- ?
- ????Task t = new Task(() =>
- ????{
- ????????int i = 0;
- ????????while (true)
- ????????{
- ????????????i++;
- ????????????Thread.Sleep(1000);
- ????????????Console.WriteLine("this is task iteration " + i);
- ?
- ????????????//注册信号量,如果用户取消,那么将会中断在此处
- ????????????cancellationToken.ThrowIfCancellationRequested();
- ?
- ????????????Console.WriteLine("Test to see if below can be excuted...");
- ????????????Console.WriteLine("I am not excute");
- ????????}
- ????}, cancellationToken);
- ?
- ????t.Start(); //开始任务
- ?
- ????Thread.Sleep(1000);
- ?
- ????cancellationTokenSource.Cancel(); //取消任务
- ?
- ????try
- ????{
- ????????t.Wait();
- ????}
- ????catch (AggregateException e)
- ????{
- ????????if (e.InnerException is OperationCanceledException)
- ????????????Console.WriteLine("the opeartion has been canceled...");
- ????????else
- ????????????Console.WriteLine("encounter some unexpected exceptions...");
- ????}
- }
时间: 2024-10-06 03:14:30