1

いくつかの http リクエストを作成し、タスクで実行する機能があります。その関数は途中で中断される可能性があります。タスクを中止できないため、関数にいくつかのブール条件を追加しました。例:

public int foo(ref bool cancel)
{
    if(cancel)
    {
        return null
    }
    //do some work...
    if(cancel)
    {
        return null
    }
    //http webrequest
    if(cancel)
    {
        return null
    }
 }

これは非常にうまく機能しましたが、これはかなり醜いコードです。

もう 1 つの問題は、Web 要求を既に実行していて、応答を取得するのに関数 cncelation に時間がかかるよりも時間がかかることです (応答を取得するまで)。

これを確認するより良い方法はありますか?または、タスクの代わりにスレッドを使用する必要がありますか?

編集

キャンセルトークンを追加しました: cancelationTokenSource を宣言し、そのトークンをタスクに渡しました

CancellationTokenSource cncelToken = new CancellationTokenSource();
Task t = new Task(() => {foo()},cancelToken.token);

cancelToken.Cancel(); を行うとき 私はまだ応答を待っていますが、tsk はキャンセルされません。

4

1 に答える 1