如何取消第三方任务?

时间:2013-08-31 11:08:36

标签: c# task-parallel-library task

我有一个第三方任务在以下代码中运行:

var ts = new CancellationTokenSource();
var ct = ts.Token;

var node = Task<IResponseAdapter>.Factory.StartNew(() =>
{
    return NewRequest(n.RequestClass, n.MinCommission, n.MaxCommission).Submit();

}, ct);

正如您所看到的,方法调用是任务中唯一的内容,并且进入任务的全部原因是,如果超时,我可以取消它。许多第三方方法是按顺序运行的,因此监控行为不当/不响应的作业并终止它们以便下一个作业运行是很重要的。

在我的代码的其他地方我有

var completed = task.Wait(timeoutValue);

if(!completed) tokensource.Cancel();

但是,我认为这实际上并没有取消任务,只提供了访问它的方法。

那么如何阻止第三方Web服务方法运行?

1 个答案:

答案 0 :(得分:1)

您当然无法阻止已在另一台计算机上运行的方法(通过Web服务)。任务的取消令牌只能在设置令牌时停止启动任务。任务开始后,由于Thread.Abort应该(几乎)永远不会被使用的相同原因而无法回复。