c# Task waitAll,WhenAll
2024-09-05 20:35:31
wait 阻塞的 when是异步的非阻塞的。
Task[] tlist = new Task[] { Task.Run(() => { Thread.Sleep(3000); }), Task.Factory.StartNew(() => { Thread.Sleep(90000); }) }; //Task.WaitAll(tlist);
// MessageBox.Show("ok ");
Task.WhenAny(tlist).ContinueWith((s)=>{ MessageBox.Show("ok");
return s;
});
上面是例子WhenAny 是任何一个任务完成就会执行 MessageBox.Show("ok"); 测试上面的例子等待3秒回OK。
如果换成WhenAll那你会等待90秒才会看到 MessageBox.Show("ok"); ContinueWith 就是任务完成后执行的方法体,
就是个Task. Task.WaitAll(tlist);意思是一样但是,线程会阻塞。因为 Task.WaitAll 不是一个异步或Task类型,而是一个常规方法体。
有了.Netframwork4.5的Task感觉比以前多线程简化很多也方便很多。基本可以抛弃 new Thread... 和BackgroundWorker了。
.Netframwork4.5里的Task.Run等效于 Task.Factory.StartNew 。Task.Factory.StartNew 在4.0里就有。
最新文章
- 理解浮动和position定位
- java线程池ThreadPoolExecutor使用简介
- windows获取硬盘使用率等信息
- 【URAL 1297】Palindrome 最长回文子串
- dhcp原理、安装、相关命令、疑惑
- Nginx+tomcat 做负载均衡
- OpenXml操作Word的一些操作总结. - 天天不在
- QTP下载链接
- .NET中的程序集(Assembly)
- C# 对类中的保护成员进行写操作(邀请大家拍砖)
- IOS版新闻客户端应用源码项目
- Android开发10.3:UI组件GridView网格视图
- Android之Http通信——3.Android HTTP请求方式:HttpURLConnection
- Mongodb基础用法及查询操作[转载]
- php操作mongodb的常用函数
- Python学习笔记-Django连接SQLSERVER
- notes for lxf(三)
- Android内嵌VLC实现播放网络视频,网络音频
- INSERT 中ON DUPLICATE KEY UPDATE的使用
- JavaScript 取对象的值时用点和中括号的区别