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

ただし、これは実際にタスクをキャンセルするのではなく、タスクにアクセスする方法を提供するだけだと思います。

では、サードパーティの Web サービス メソッドの実行を停止するにはどうすればよいでしょうか?

4

1 に答える 1

1

別のコンピューターで (Web サービスを介して) 既に実行されているメソッドを停止することはできません。タスクのキャンセル トークンは、トークンが設定されている場合にのみ、タスクの開始を停止できます。Thread.Abortタスクが開始されると、 (ほとんど) 決して使用されるべきではないのと同じ理由で戻る方法はありません。

于 2013-08-31T11:14:24.003 に答える