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 ...
随机推荐
- 5分钟K线图压力线买点怎么看?
某开盘后底开一直呈现形成了一个长时间的箱体振荡的走势,K线在底位振荡时,其波动底点总是在不断抬高的话,这种走势说明有资金在场中积极运作,正是由于资金悄然建仓导致了底点慢慢抬高的走势,在底点不断抬高时, ...
- subline 相关
ctrl + ` 输入命令: import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.insta ...
- 生成一个文件夹中的所有文件的txt列表
1.windows操作系统中 1.用管理员运行打开dos界面: 2.用cd转到相应的文件夹中: 3.用dir /b /on >list.txt来生成文件列表的txt. 2.Mac系统中 1.打开 ...
- 人脸识别 1:1 和1:n
- Eclipse里的代码光标变成一个黑色块
以前经常在编写程序是不知到碰到键盘上的那个键了,或是那几个组合键了,使得Eclipse里的代码光标变成一个黑色块:在这个状态下,光标不在活动自如,只能一直往后写代码,就不想平时的 " | & ...
- JDK各个版本比较 JDK5~JDK10
JDK1.5新特性: 1.自动装箱与拆箱: 2.枚举 3.静态导入,如:import staticjava.lang.System.out 4.可变参数(Varargs) 5.内省(Introspec ...
- Java 日期时间 Date类型,long类型,String类型表现形式的转换
Java 日期时间 Date类型,long类型,String类型表现形式的转换 1.java.util.Date类型转换成long类型 java.util.Date dt = new Date(); ...
- tomact启动报错org.apache.jasper.EmbeddedServletOptions.<init> The scratchDir you specified:xxx is unusable.
问题: 22-May-2018 18:00:15.891 严重 [localhost-startStop-1] org.apache.jasper.EmbeddedServletOptions.< ...
- android显示和隐藏软键盘(转)
显示键盘: EditText editText.setFocusable(true); editText.setFocusableInTouchMode(true); editText.request ...
- java面试题:基础知识
类和对象 Q:讲一下面向对象OOP思想. 面向对象主要是抽象,封装,继承,多态. 多态又分为重载和重写.重载主要是方法参数类型不一样,重写则是方法内容不一样. Q:抽象类和接口有什么区别? 抽象类中可 ...