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 ...
随机推荐
- Delphi 透明窗体显示文字
设置窗体属性:BorderStyle 属性设置为 bsNoneColor 属性设置为 clWhite(白色:窗体背景色)TransparentColor 属性设置为 trueTransparentCo ...
- 在服务器上同时启动多个tomcat
我所用Tomcat服务器都为zip版,非安装版.以两个为例:安装第二个Tomcat完成后,到安装目录下的conf子目录中打开server.xml文件,查找以下三处:(1) 修改http访问端口(默认为 ...
- Structs复习 Action
引入jar包 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version= ...
- Signing Your Applications(Android签名相关)
In this document Signing Overview Signing in Debug Mode Signing in Release Mode Signing Android Wear ...
- tensorflow pip install 安装指定版本的包并指定安装源(速度会快很多)
pip install tensorflow-gpu==1.3 pip install tensorflow-gpu==1.4 # pip install 命令行pip install -i http ...
- js基础-运算符
100 * "20" 字符串转数字 5 * "ss" NAN "ss" 转数字返回NAN 任何数字与NAN +-*/ 都返回NAN 5/N ...
- 用伪类:after画箭头
在项目中,经常会用到尖头,尤其是表单中,会有剪头的样式,尽量不要用图片显示.用伪类实现. eg 查看更多 > html: <div class="more"> ...
- 2017面向对象程序设计(Java) 第4周学习指导及要求(2017.9.14-2017.9.18)
学习目标 深入理解程序设计中算法与程序的关系: 深入理解java程序设计中类与对象的关系: 理解OO程序设计的第一个特征:封装: 需要掌握基本使用方法的预定义类有:Math类.String类.Arra ...
- FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_NEW_TASK
[FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_NEW_TASK] 1.FLAG_ACTIVITY_NEW_TASK 2.FLAG_ACTIVITY_CLEAR_T ...
- javolution学习--介绍
javolution提供一个高性的Java集合(collection )类库和一些实用的工具类.虽然这个类包只提供非常少的几个集合类,但是这些类就能够代替大部分java.util类.javolutio ...