var cts = new CancellationTokenSource();//声明一个标准的取消框架类。
cts.CancelAfter(100);//取消方式为延迟100毫秒,可以用来执行非人为取消的时间限制。比如应用接口类的应用程序。
//cts.Cancel();//这个方法可以用执行异步调用时的人为取消。
//以下对并行查询的取消:
try
{
Parallel.For(0, 1000, new ParallelOptions()
{
CancellationToken = cts.Token
},
x =>
Console.WriteLine(String.Format("Current Loop is {0}", x))
);
}
catch (OperationCanceledException ex)
{
Console.WriteLine(ex.Message);
}
//以下对任务查询的取消:
Task t1 = new Task(() =>
{
for (int i = 0; i < 1000; i++)
{
Console.WriteLine(String.Format("Current Loop is {0}", i));
CancellationToken token = cts.Token;//标准的取消框架。
if (token.IsCancellationRequested)
{
break;
}
}
});
t1.Start();
Console.ReadKey();
cts.CancelAfter(100);//取消方式为延迟100毫秒,可以用来执行非人为取消的时间限制。比如应用接口类的应用程序。
//cts.Cancel();//这个方法可以用执行异步调用时的人为取消。
//以下对并行查询的取消:
try
{
Parallel.For(0, 1000, new ParallelOptions()
{
CancellationToken = cts.Token
},
x =>
Console.WriteLine(String.Format("Current Loop is {0}", x))
);
}
catch (OperationCanceledException ex)
{
Console.WriteLine(ex.Message);
}
//以下对任务查询的取消:
Task t1 = new Task(() =>
{
for (int i = 0; i < 1000; i++)
{
Console.WriteLine(String.Format("Current Loop is {0}", i));
CancellationToken token = cts.Token;//标准的取消框架。
if (token.IsCancellationRequested)
{
break;
}
}
});
t1.Start();
Console.ReadKey();