簡體   English   中英

取消令牌如何停止繼續?

[英]how cancellation token stop continue with?

我有一個帶有此代碼的線程:

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

    // ... some operation...
}

// ... some operation 2...

注意我使用return而不是break ,因為如果我停止線程,則不能執行some operation 2

我也注意到,以這種方式.ContinueWith它沒有被執行。

好吧,但那只是一個“回歸”功能。 由於tokenSource.Cancel()而不是通常的返回,C#如何知道我正在返回?

您不應該使用相同的取消令牌創建延續,否則即使在執行之前,也會取消延續。 如果您始終希望執行取消,則使用不同的取消令牌(來自不同的取消源)創建延續,或者只是在沒有取消令牌的情況下創建它。

CancellationToken旨在立即將取消傳播到整個動作集。 取消()它的源后,將不會調用其他延續。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM