3

タスクを作成するとします

bool aBoolean = true;

Task.Factory.StartNew(() =>
    while(aBooloean)    {
       ...
    }
}

タスクを終了するグローバルブール値を使用してタスクを終了する方がよいでしょうか。

それとも、CancellationTokenSourceを使用する方が良いですか?

CancellationTokenSourceを使用してタスクを終了するのはいつ適切ですか?

CancellationTokenSourceを使用して、一貫性のない状態のままにすると、例外がスローされるだけですか?

ありがとう

4

1 に答える 1

3

「グローバル」ブール値を持つと、最適化またはCPUキャッシュにキャッシュされるリスクがあり、値の変化が見られない場合があります。 をキャンセルするためCancellationTokenSource推奨されるTask方法です。タスクはトークンを使用してキャンセルが要求されているかどうかをテストし、タスクのアクションデリゲートから戻るだけです。必要がない場合は、例外をスローする必要はありません。

于 2012-08-14T04:45:16.943 に答える