c#task list waitall task waitany

上边的主线程会被卡住:
7个同时开发,谁先完成之后, 需要完成某个工作,可以用waitany
2: 不卡界面的做法

加上以上命令就不卡,是子线程做的事
//Task task = taskFactory.StartNew(action);
Console.WriteLine("Eleven老师接到一个项目");
Console.WriteLine("沟通需求,谈妥价格");
Console.WriteLine("签合同,收取50%的费用");
Console.WriteLine("高级班筛选学员,组建团队");
Console.WriteLine("详细的需求分析、系统设计、模块划分、框架搭建");
Console.WriteLine("开始干活。。。");
Console.WriteLine(" "); List<Task> taskList = new List<Task>(); taskList.Add(taskFactory.StartNew(() => this.Coding("浑无痕", "Portal")));
taskList.Add(taskFactory.StartNew(() => this.Coding(" 菜鸟 ", "BackService")));
taskList.Add(taskFactory.StartNew(() => this.Coding("oldwork", "Client")));
taskList.Add(taskFactory.StartNew(() => this.Coding(" 米 ", "WeChatClient")));
taskList.Add(taskFactory.StartNew(() => this.Coding("走自己的路", " WCF ")));
taskList.Add(taskFactory.StartNew(() => this.Coding("滑猪小板", " DB ")));
taskList.Add(taskFactory.StartNew(() => this.Coding("Walden", "小程序"))); //都开发完成后,进行联调测试 不是我做的,是开发者 taskFactory.ContinueWhenAny(taskList.ToArray(),
t => Console.WriteLine("第一个完成的,获取红包奖励,{0}", Thread.CurrentThread.ManagedThreadId)); taskFactory.ContinueWhenAll(taskList.ToArray(),
tList => Console.WriteLine("都开发完成后,开始联调测试,{0}", Thread.CurrentThread.ManagedThreadId)); Task.WaitAny(taskList.ToArray());//等待任意一个任务的完成,会卡主当前的运行线程
Console.WriteLine("某个模块完成开发后,老师再收取20%的费用"); Task.WaitAll(taskList.ToArray());//等待全部任务的完成,会卡主当前的运行线程 Console.WriteLine("项目开发验收完成后,老师去收取全部的费用");
Console.WriteLine("老师给大家分钱。。。"); Console.WriteLine("******************btnTask_Click 异步方法 end {0}********************", Thread.CurrentThread.ManagedThreadId);
Console.WriteLine();
} /// <summary>
/// Coding
/// </summary>
/// <param name="name"></param>
private void Coding(string name, string project)
{
Console.WriteLine("******************Coding start {0} {1} {2} {3}********************",
name, project, Thread.CurrentThread.ManagedThreadId.ToString(""), DateTime.Now.ToString("HHmmss:fff")); long lResult = ;
for (int i = ; i < ; i++)
{
lResult += i;
}
Thread.Sleep(); Console.WriteLine("******************Coding end {0} {1} {2} {3}********************",
name, project, Thread.CurrentThread.ManagedThreadId.ToString(""), DateTime.Now.ToString("HHmmss:fff"));
}
c#task list waitall task waitany的更多相关文章
- C# Task WaitAll和WaitAny
Task 有静态方法WaitAll和WaitAny,主要用于等待其他Task完成后做一些事情,先看看其实现部分吧: public class Task : IThreadPoolWorkItem, I ...
- Task CancellationTokenSource和Task.WhenAll的应用
Task是.net4.0推出的异步编程类,与ThreadPool.QueneUserWorkItem方法类似的是,Task也是使用线程池来工作的.但Task比起这个QueneUserWorkItem的 ...
- 第八节:Task的各类Task<TResult>返回值以及通用线程的异常处理方案。
一. Task的各种返回值-Task<TResult> PS: 在前面章节,我们介绍了Task类开启线程.线程等待.线程延续的方式,但我们并没有关注这些方式的返回值,其实他们都是有返回值的 ...
- 【.NET】- Task.Run 和 Task.Factory.StartNew 区别
Task.Run 是在 dotnet framework 4.5 之后才可以使用, Task.Factory.StartNew 可以使用比 Task.Run 更多的参数,可以做到更多的定制. 可以认为 ...
- C# Task 多任务 限制Task并发数量
LimitedTaskScheduler: using System; using System.Collections.Concurrent; using System.Collections.Ge ...
- Task.Run 和 Task.Factory.StartNew 区别
Task.Run 是在 dotnet framework 4.5 之后才可以使用, Task.Factory.StartNew 可以使用比 Task.Run 更多的参数,可以做到更多的定制. 可以认为 ...
- Task.Run Vs Task.Factory.StartNew
在.Net 4中,Task.Factory.StartNew是启动一个新Task的首选方法.它有很多重载方法,使它在具体使用当中可以非常灵活,通过设置可选参数,可以传递任意状态,取消任务继续执行,甚至 ...
- Task.Run Vs Task.Factory.StartNew z
在.Net 4中,Task.Factory.StartNew是启动一个新Task的首选方法.它有很多重载方法,使它在具体使用当中可以非常灵活,通过设置可选参数,可以传递任意状态,取消任务继续执行,甚至 ...
- MapReduce作业的map task和reduce task调度参数
MapReduce作业可以细分为map task和reduce task,而MRAppMaster又将map task和reduce task分为四种状态: 1.pending:刚启动但尚未向reso ...
随机推荐
- 原生js上传文件,使用new FormData()
当创建一个内容较多的表单,表单里面又有了文件上传,文件上传也需要表单提交,单一的上传文件很好操作: <form action="接口" enctype="multi ...
- [重点]delphi删除部分字符串(不区分大小写)
type TDelFlags = set of (dfDelBefore, dfDelAfter); //删除ms字符串中endstr子字符串前面或后面的部分字符串 procedure Delstr( ...
- Microsoft® SQL Server® 2012 功能包
Microsoft® SQL Server® 2012 功能包 http://www.microsoft.com/zh-cn/download/details.aspx?id=29065 Micros ...
- hive 排序 分组计数后排序 几种不同函数的效果
[转至:http://blackproof.iteye.com/blog/2164260] 总结: 三个分析函数都是按照col1分组内从1开始排序 (假设4个数,第2和第3个数据相同) row_ ...
- CSS 规范 命名规则
http://nec.netease.com/standard/css-practice.html
- PowerDesigner导入sql脚本生成物理模型
https://www.cnblogs.com/zsswpb/p/5771623.html
- Redis安装完后redis-cli无法使用(redis-cli: command not found)已使用
wget http://download.redis.io/redis-stable.tar.gz(下载redis-cli的压缩包) tar xvzf redis-stable.tar.gz(解压) ...
- Light Explorer
[Light Explorer] The Light Explorer allows you to select and edit light sources. Window> Lighting ...
- Linq to sql 之 ExecuteQuery 错误:指定的转换无效
问题:通过dbContext.ExecuteQuery 得到数据并赋值给一个集合. 代码: public IEnumerable<LeaveCodeSum> GetLeavTotal(st ...
- 搭建asp渗透测试环境
win2k3下载地址 http://yun.baidu.com/share/link?shareid=77306757&uk=2852438886 win2003 Enterprise Edi ...