如何取消令牌停止继续
本文关键字:令牌 继续 取消 何取消 | 更新日期: 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()了它的源,其他的延续就不会被调用了。