第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何取消任務(wù)類型集合中的特定任務(wù)

如何取消任務(wù)類型集合中的特定任務(wù)

C#
拉丁的傳說 2022-12-31 11:17:10
所以我想找出一種方法來取消特定任務(wù)。在示例中,我想取消它生成的 3 個(gè)任務(wù)中的 2 個(gè)static async Task Main(string[] args){    var tasks = Enumerable.Range(0, 3).Select(x => Task.Run(() =>    {        Counter();    }));    await Task.WhenAll(tasks);    Console.ReadLine();}public static void Counter(){    while (true)    {        for (int i = 0; i < 1000; i++)        {            Console.WriteLine(i);        }    }}如果我要這樣做while (someProperty)并更改someProperty為false然后所有線程都會(huì)停止。我想停止 2/3,我該怎么做?
查看完整描述

1 回答

?
SMILET

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

CancellationToken如果你想單獨(dú)取消它們,你需要為你開始的每個(gè)任務(wù)傳遞一個(gè):


static async Task Main(string[] args)

{

    var cancellationSources = Enumerable.Range(0, 3)

      .Select(_ => new CancellationTokenSource())

      .ToList();


    var tasks = Enumerable.Range(0, 3).Select(x => Task.Run(

        () => Counter(cancellationSources[x].Token),

        cancellationSources[x].Token

    ));


    cancellationSources[1].Cancel();


    await Task.WhenAll(tasks);


    Console.ReadLine();


}


public static void Counter(CancellationToken cancellationToken)

{

    while (!cancellationToken.IsCancellationRequested)

    {

        // or while(true) and token.ThrowIfCancellationRequested(); to throw instead


        for (int i = 0; i < 1000; i++)

        {

            Console.WriteLine(i);

        }

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-12-31
  • 1 回答
  • 0 關(guān)注
  • 98 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)