异步-学习笔记3 Task
1. 通过Task启动多线程
2. 解决多线程的几大应用场景
private void btnTask_Click(object sender, EventArgs e)
{
Console.WriteLine("************************btnTask_Click Begin*************************");
Console.WriteLine("Eleven老师接到私单项目");
Console.WriteLine("沟通需求,确认需求,谈价格");
Console.WriteLine("签合同,受50%的首期费用");
Console.WriteLine("老师筛选学员,组建团队");
Console.WriteLine("完成初步设计,系统分工");
Console.WriteLine("老师干活....."); TaskFactory factory = new TaskFactory(); //创建一个Task工厂
List<Task> tasklist = new List<Task>();
tasklist.Add(factory.StartNew( //匿名函数
delegate ()
{
this.coding("PoPo", "WCF");
}
));
tasklist.Add(factory.StartNew(() => this.coding("YoYo", "Portal")));
tasklist.Add(factory.StartNew(() => this.coding("DoDo", "Client")));
tasklist.Add(factory.StartNew(() => this.coding("WoWo", "WechatClient")));
tasklist.Add(factory.StartNew(() => this.coding("ToTo", "EAServer"))); //ContinueWhenAny会开一个新的子线程
//ContinueWhenAll会开一个新的子线程
tasklist.Add(factory.ContinueWhenAny(tasklist.ToArray(), t => Console.WriteLine("获得大红包 id={0}", Thread.CurrentThread.ManagedThreadId)));
tasklist.Add(factory.ContinueWhenAll(tasklist.ToArray(), tlist => Console.WriteLine("开始联调、部署、测试、验收 {0}", Thread.CurrentThread.ManagedThreadId))); //某个模块完成后收取20%
Task.WaitAny(tasklist.ToArray()); //任一子线程结束;卡住当前线程,让程序完成等待
Console.WriteLine("某个模块完成后, 收取剩下的20%"); //开发完成后收钱
Task.WaitAll(tasklist.ToArray()); //等待所有子线程结束;卡住当前线程,让程序完成等待
Console.WriteLine("收取剩下的30%");
Console.WriteLine("************************btnTask_Click end*************************");
}
private void coding(string username,string projectname)
{
Console.WriteLine("{0} {1} start coding {2},线程id={3}", DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss.fff"), username, projectname,Thread.CurrentThread.ManagedThreadId);
int icount = ;
for (int i = ; i < ; i++)
{
icount = i;
}
Console.WriteLine("{0} {1} end coding {2},线程id={3}", DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss.fff"), username, projectname, Thread.CurrentThread.ManagedThreadId);
}
运行结果
异步-学习笔记3 Task的更多相关文章
- c#异步学习笔记
如下代码.只需要异步的处理一个数据,不需要等处理完成后,进行后继的操作.可以不用Async来修饰方法 static void Main(string[] args) { Test(); Console ...
- JavaScript异步学习笔记——主线程和任务队列
任务队列 单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务.如果前一个任务耗时很长,后一个任务就不得不一直等着. 同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕, ...
- Swoft2.x 小白学习笔记 (三) --- Task、协程
介绍swoft中 1.Task 2.协程 一:Task任务: 1.配置,在 app/bean.php文件中加入 'httpServer' => [ // ... 'on' => [ Swo ...
- js作用域、异步——学习笔记
所有的 for if switch while do 等等,都属于块级作用域,里面声明的对象,外面也能访问.但function 函数里的作用域,在函数外是访问不到的. 但函数作用域里面可以访问外面. ...
- 多线程编程学习笔记——使用异步IO(一)
接上文 多线程编程学习笔记——使用并发集合(一) 接上文 多线程编程学习笔记——使用并发集合(二) 接上文 多线程编程学习笔记——使用并发集合(三) 假设以下场景,如果在客户端运行程序,最的事情之一是 ...
- 多线程编程学习笔记——异步调用WCF服务
接上文 多线程编程学习笔记——使用异步IO 接上文 多线程编程学习笔记——编写一个异步的HTTP服务器和客户端 接上文 多线程编程学习笔记——异步操作数据库 本示例描述了如何创建一个WCF服务,并宿主 ...
- EF学习笔记(九):异步处理和存储过程
总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上一篇:EF学习笔记(八):更新关联数据 本篇原文:Async and Stored Procedures 为何要采用异步? ...
- 多线程编程学习笔记——使用异步IO
接上文 多线程编程学习笔记——使用并发集合(一) 接上文 多线程编程学习笔记——使用并发集合(二) 接上文 多线程编程学习笔记——使用并发集合(三) 假设以下场景,如果在客户端运行程序,最的事情之一是 ...
- ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则
ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...
随机推荐
- Paris Traceroute
Paris Traceroute is a new version of the well-known network diagnosis and measurement tool. Why shou ...
- OSPF协议详解
CCNP OSPF协议详解 2010-02-24 20:30:22 标签:CCNP 职场 OSPF 休闲 OSPF(Open Shortest Path Fitst,ospf)开放最短路径优先协议,是 ...
- JavaScript的理解记录(1)
1.JavaScript的数据类型分为两类:原始类型和对象类型: 原始类型包括:数字,字符串,布尔值,null和undefined; (都是不可变类型,值不可以修改) 对象类型:普通对象和函数: 函数 ...
- JAVA多线程(一)
进程与线程: 一个进程可以包含多个线程.多个线程可以并行,但是一个时间点只能有一个线程是运行状态. 线程的状态: 查看API可以,线程的状态分为五种: (JVM里面的状态:These states a ...
- android开发------编写用户界面之线性布局
一个好的应用程序离不开人性化的用户界面.在学习其他东西之前.理应先学习编写程序的布局(外观) 今天,我们就来学习android的UI布局----LinearLayout. LinearLayout,即 ...
- ubuntu14.04 安装配置JDK1.7
1,下载jdk-7u45-linux-x64.tar.gz 网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downlo ...
- 【BZOJ 4569】【SCOI 2016】萌萌哒
http://www.lydsy.com/JudgeOnline/problem.php?id=4569 用ST表表示所有区间,根据ST表中表示的区间长度种一棵nlogn的树,类似线段树,每个节点的左 ...
- Linux下磁盘分区挂载
一般你去买vps都会看到介绍说硬盘多少G 比如 80G 但是你进入系统df -h的时候发现怎么只有10G呢, 其实这10G是用来装系统的和一些常用服务软件的 不是给你放网站数据的 那50G硬盘在哪 ...
- 小 div在大 div中左右上下居中
<!DOCTYPE HTML><html><head> <meta http-equiv="Content-Type" content=& ...
- nutch-2.1导入eclipse+mysql运行
初次接触nutch,记录下来 首先数据库 CREATE DATABASE nutch DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_c ...