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

献丑贴:Task.Run中foreach优化

有一个场景:

在Task.Run中循环执行N个任务,原来的写法:

var task = Task.Run(async () =>{int i = 0;foreach (var item in tables){i++;await writefileAsync(namespace1, item, showProcess);}});_ = task.ContinueWith(t => { stopwatch.Stop(); MessageBox.Show($"代码生成完毕!{stopwatch.Elapsed}"); });

这种写法其实最大的问题是,既然用了taks.run,而又手动进行循环顺序处理,其实并没有发挥出task的威力来,因为task是支持多个任务并行处理的,改用并行处理:

 var tasks = tables.Select(item => writefileAsync(namespace1, item, showProcess));await Task.WhenAll(tasks);stopwatch.Stop(); MessageBox.Show($"代码生成完毕!{stopwatch.Elapsed}");

经过对比发现,性能提升明显(单次测试处理时间:0.9s->0.4s)!

http://www.jsqmd.com/news/12569/

相关文章:

  • 完整教程:应用部署(后端)
  • C# 定时任务 Quartz.NET 的使用
  • 2025.10.13——1橙
  • WPF 通过RawInput获取系统全局触摸事件
  • 基于高频电流探头的电磁兼容(EMI/EMC)测试与诊断技术方案
  • Spring 事务、循环依赖连环问
  • 20232327 2025-2026-1 《网络与系统攻防技术》实验一实验报告
  • 完整教程:OSPF LSA/ 路由种类
  • 单挑市面上所有监控设备模拟器/可能是最好用的监控模拟器/支持onvif和28181协议/虚拟监控/桌面转监控/任意源转监控设备
  • 在Java 11中,如何处理被弃用的类或接口?
  • chmod只修改文件或者只修改目录权限
  • 每周资讯 | 腾讯《三角洲行动》周年庆登双榜TOP1;腾讯首款生活模拟游戏《粒粒的小人国》曝光 - 教程
  • .NET 自动依赖注入神器
  • NetDreamCTF WP - 指南
  • [1134] Connecting to Land Insight SFTP and GIS Servers
  • VLA技术论文阅读 - 详解
  • 实用指南:构建神经网络的两大核心工具
  • 简单高效的SQL注入测试方法:Break Repair技巧详解
  • 实用指南:Qt 界面优化 --- QSS
  • display ip interface brief 概念及题目 - 指南
  • VMware ESXi 9.0.1.0 macOS Unlocker OEM BIOS 2.7 HPE 慧与 定制版
  • ICDesigner2027下载ICDsigner2027 download ICDesigner2027ダウンロード
  • VMware ESXi 9.0.1.0 macOS Unlocker OEM BIOS 2.7 Lenovo 联想 定制版
  • 当AI开始“通感”:诗词创作中的灵性涌现
  • VMware ESXi 9.0.1.0 macOS Unlocker OEM BIOS 2.7 Dell 戴尔 定制版
  • rqlite java sdk 对于sqlite-vec 支持的bug
  • 【GitHub每日速递 251013】SurfSense:可定制AI研究神器,连接多源知识,功能超丰富!
  • FileZilla Client升级之后报了一个错误queue.sqlite3文件保存失败
  • tap issue
  • 通配符SSL证书价格对比 iTrustSSL与RapidSSL哪个更有优势?