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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 For 循環(huán)中運(yùn)行任務(wù)組

在 For 循環(huán)中運(yùn)行任務(wù)組

C#
守候你守候我 2023-08-20 10:59:03
我有一組 100 個任務(wù)需要以任意順序運(yùn)行。將它們?nèi)糠湃胪鵗ask.WhenAll()會使后端超載,這是我無法控制的。我想一次運(yùn)行 n 個任務(wù),每個任務(wù)完成后,然后運(yùn)行下一組。我編寫了這段代碼,但是在任務(wù)運(yùn)行后,“控制臺(正在運(yùn)行...”)被打印到屏幕上,這讓我認(rèn)為所有任務(wù)都正在運(yùn)行。如何強(qiáng)制系統(tǒng)真正“等待”每組任務(wù)?//Run some X at a timeint howManytoRunAtATimeSoWeDontOverload = 4;for(int i = 0; i < tasks.Count; i++){    var startIndex = howManytoRunAtATimeSoWeDontOverload * i;    Console.WriteLine($"Running {startIndex} to {startIndex+ howManytoRunAtATimeSoWeDontOverload}");    var toDo = tasks.Skip(startIndex).Take(howManytoRunAtATimeSoWeDontOverload).ToArray();    if (toDo.Length == 0) break;    await Task.WhenAll(toDo);}屏幕輸出:
查看完整描述

1 回答

?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個贊

有很多方法可以做到這一點(diǎn),但我可能會使用一些提供更高級別抽象的庫或框架,例如 TPL 數(shù)據(jù)流。

這比構(gòu)建您自己的緩沖機(jī)制要容易得多。下面是一個非常簡單的示例,但您可以對其進(jìn)行不同的配置,并使用該庫執(zhí)行更多操作。在下面的示例中,我沒有對它們進(jìn)行批處理,但我確保同時處理的任務(wù)不超過 10 個。

我有一組 100 個任務(wù)需要以任意順序運(yùn)行。將它們?nèi)糠湃胪鵗ask.WhenAll()會使后端超載,這是我無法控制的。


我想一次運(yùn)行 n 個任務(wù),每個任務(wù)完成后,然后運(yùn)行下一組。我編寫了這段代碼,但是在任務(wù)運(yùn)行后,“控制臺(正在運(yùn)行...”)被打印到屏幕上,這讓我認(rèn)為所有任務(wù)都正在運(yùn)行。


如何強(qiáng)制系統(tǒng)真正“等待”每組任務(wù)?


//Run some X at a time

int howManytoRunAtATimeSoWeDontOverload = 4;

for(int i = 0; i < tasks.Count; i++)

{

? ? var startIndex = howManytoRunAtATimeSoWeDontOverload * i;

? ? Console.WriteLine($"Running {startIndex} to {startIndex+ howManytoRunAtATimeSoWeDontOverload}");


? ? var toDo = tasks.Skip(startIndex).Take(howManytoRunAtATimeSoWeDontOverload).ToArray();

? ? if (toDo.Length == 0) break;

? ? await Task.WhenAll(toDo);

}

屏幕輸出:


查看完整回答
反對 回復(fù) 2023-08-20
  • 1 回答
  • 0 關(guān)注
  • 131 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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