当前位置: 首页 > wzjs >正文

网站项目验收化工seo顾问

网站项目验收,化工seo顾问,wordpress支付按钮,学习做网站建设的学校Task.WhenAll 是 .NET 中用于并行等待多个异步任务的核心方法。它可以让多个异步操作同时执行,然后一次性等待所有任务完成,而不是逐个等待。async void Main() {// 准备数据:[1,2,3,4,5,6,7,8,9,10]var inputs Enumerable.Range(1,10).ToAr…

Task.WhenAll 是 .NET 中用于并行等待多个异步任务的核心方法。它可以让多个异步操作同时执行,然后一次性等待所有任务完成,而不是逐个等待。

async void Main()
{// 准备数据:[1,2,3,4,5,6,7,8,9,10]var inputs = Enumerable.Range(1,10).ToArray();var outputs = new List<int>();// ❌ 错误方式:串行执行(一个接一个)//foreach (var element in inputs)//{//    var result = await HeavyJobAsync(element);  // 等待当前任务完成//    outputs.Add(result);                       // 再开始下一个//}// 总耗时:10 × 200ms = 2000ms// ✅ 正确方式:使用 Task.WhenAll 并行执行var tasks = new List<Task<int>>();// 第一步:启动所有任务(不等待结果)foreach (var element in inputs){// 关键:这里创建并启动任务,但不 await,任务立即开始在后台执行tasks.Add(HeavyJobAsync(element));}// 第二步:使用 Task.WhenAll 等待所有任务完成await Task.WhenAll(tasks);  // 🎯 重点!// 第三步:收集所有任务的结果outputs = tasks.Select(t => t.Result).ToList();outputs.Dump();  // 输出:[1,4,9,16,25,36,49,64,81,100]
}// 模拟耗时异步操作
async Task<int> HeavyJobAsync(int input)
{await Task.Delay(200);  // 模拟200ms的工作return input * input;   // 返回平方值
}

分析

方式1的问题:
foreach (var element in inputs)
{var result = await HeavyJobAsync(element);  //这里会"阻塞"// 程序会在这里停下来等待,直到HeavyJobAsync完成// 然后才会执行下一次循环
}
方式2的优势:
// 第一步:快速启动所有任务
foreach (var element in inputs)
{tasks.Add(HeavyJobAsync(element));  // 只是启动,不等待// HeavyJobAsync立即返回Task对象,实际工作在后台进行
}// 第二步:统一等待所有任务完成
await Task.WhenAll(tasks);  // 一次性等待所有任务

Task.WhenAll 的不同用法

1. 有返回值的任务

// 启动多个任务
var task1 = GetDataAsync(1);
var task2 = GetDataAsync(2);
var task3 = GetDataAsync(3);// 等待所有任务并获取结果
int[] results = await Task.WhenAll(task1, task2, task3);
// results = [result1, result2, result3] 按顺序排列

2. 无返回值的任务

// 启动多个任务
var task1 = SaveDataAsync(data1);
var task2 = SaveDataAsync(data2);
var task3 = SaveDataAsync(data3);// 等待所有任务完成
await Task.WhenAll(task1, task2, task3);

3. 动态任务集合

// 动态创建任务列表
var tasks = urls.Select(url => DownloadAsync(url)).ToList();// 等待所有下载完成
string[] contents = await Task.WhenAll(tasks);

使用场景

同时调用多个Web服务、同时读写多个文件、数据库操作:并行执行多个查询。

Task.WhenAny vs Task.WhenAll 核心区别

特性Task.WhenAllTask.WhenAny
等待策略等待所有任务完成等待任何一个任务完成
完成条件最慢的任务完成时最快的任务完成时
返回结果所有任务的结果数组第一个完成的任务对象
用途并行处理,需要所有结果竞争场景,只要第一个结果

http://www.dtcms.com/wzjs/447685.html

相关文章:

  • 长春电商网站建设费用crm管理系统
  • 做的网站没有注册关键词规划师
  • 电商平台网站设计公司培训班有哪些课程
  • 页游网关键词优化seo多少钱一年
  • 福州贸易公司网站制作公司广告推广
  • 网站技术维护怎么做信息流广告代理商
  • 把自己的电脑做网站服务器子域名网址查询
  • 三联网站建设工作室大型的营销型网站
  • 精品课程网站建设的背景及意义全网营销方案
  • 网站开发网页设计免费网站外链推广
  • 三站合一网站建设方案能打开的a站
  • 如何建网站的步骤运城seo
  • 各大网站的软文怎么做seo推广任务小结
  • 莱芜新闻联播回放关键词优化公司
  • 网站的布局有哪些优化软件刷排名seo
  • 可以做问卷调查的网站网站统计工具有哪些
  • 换接入商网站备案sem分析是什么
  • 中铁建设集团门户网登录网站关键词歌词完整版
  • php做的网站模板如何建网站
  • 亚马逊周末可以视频认证吗落实20条优化措施
  • 公司做网站费用会计处理常州网站建设
  • 做网站图片如何压缩图片线上卖护肤品营销方法
  • 站点建设网站百度竞价专员
  • 网站建设费入什么科目门户网站怎么做
  • 在线工具seo专业培训机构
  • 今日全国猪价最新表优化网站性能监测
  • org已经备案的网站seo图片优化的方法
  • 外贸网站交易平台白杨seo教程
  • 两个wordpress使用同一个数据库网站seo外链平台
  • 一个外国人做汉字网站seo排名赚挂机