0

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

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();

但是,我相信这实际上并没有取消任务,而只是提供了一种访问它的方法。

那么如何阻止第三方 webservice 方法运行呢?

4

1 回答 1

1

您当然不能停止已经在另一台计算机上运行的方法(通过 Web 服务)。任务的取消令牌只能在设置令牌时停止任务启动。Thread.Abort一旦任务开始,出于同样的原因,应该(几乎)永远不要使用,就没有办法回去了。

于 2013-08-31T11:14:24.003 回答