1

私はこのコードでスレッドを持っています:

foreach (string file in allDirectoriesFiles)
{
    if (cancellationToken.IsCancellationRequested)
    {
        return;
    }

    // ... some operation...
}

// ... some operation 2...

returnの代わりにを使用していることに注意してください。breakスレッドを停止すると、 をsome operation 2実行してはならないからです。

また、このように .ContinueWith が実行されていないことにも気付きました。

まあ、それは単なる「リターン」機能です。tokenSource.Cancel()C#は、通常の戻りではなく、戻りが原因で戻っていることをどのように知ることができますか?

4

2 に答える 2

3

同じキャンセル トークンを使用して継続を作成しないでください。そうしないと、実行前であっても継続がキャンセルされます。別のキャンセル トークン (別のキャンセル ソースから) を使用して継続を作成するか、キャンセルを常に実行する場合は、キャンセル トークンを使用せずに継続を作成します。

于 2013-04-21T11:08:53.600 に答える