如何取消令牌停止继续

本文关键字:令牌 继续 取消 何取消 | 更新日期: 2023-09-27 18:10:07

我有一个线程,这个代码:

foreach (string file in allDirectoriesFiles)
{
    if (cancellationToken.IsCancellationRequested)
    {
        return;
    }
    // ... some operation...
}
// ... some operation 2...

注意,我使用return而不是break,因为如果我停止线程,some operation 2必须不被执行。

我还注意到,在这种方式下,. continuewith没有被执行。

好吧,但这只是一个"返回"函数。c#如何知道我由于tokenSource.Cancel()而不是通常的返回而返回?

如何取消令牌停止继续

您不应该使用相同的取消令牌创建延续,否则延续也将被取消,甚至在执行之前。使用不同的取消令牌创建延续(来自不同的取消源),或者如果始终希望执行取消,则不使用取消令牌创建延续。

CancellationToken意味着立即将取消传播到整个操作集。一旦Cancel()了它的源,其他的延续就不会被调用了。