我有一个第三方任务在以下代码中运行:
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服务方法运行?
答案 0 :(得分:1)
您当然无法阻止已在另一台计算机上运行的方法(通过Web服务)。任务的取消令牌只能在设置令牌时停止启动任务。任务开始后,由于Thread.Abort
应该(几乎)永远不会被使用的相同原因而无法回复。