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的更多相关文章

  1. c#异步学习笔记

    如下代码.只需要异步的处理一个数据,不需要等处理完成后,进行后继的操作.可以不用Async来修饰方法 static void Main(string[] args) { Test(); Console ...

  2. JavaScript异步学习笔记——主线程和任务队列

    任务队列 单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务.如果前一个任务耗时很长,后一个任务就不得不一直等着. 同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕, ...

  3. Swoft2.x 小白学习笔记 (三) --- Task、协程

    介绍swoft中 1.Task 2.协程 一:Task任务: 1.配置,在 app/bean.php文件中加入 'httpServer' => [ // ... 'on' => [ Swo ...

  4. js作用域、异步——学习笔记

    所有的 for if switch while do 等等,都属于块级作用域,里面声明的对象,外面也能访问.但function 函数里的作用域,在函数外是访问不到的. 但函数作用域里面可以访问外面. ...

  5. 多线程编程学习笔记——使用异步IO(一)

    接上文 多线程编程学习笔记——使用并发集合(一) 接上文 多线程编程学习笔记——使用并发集合(二) 接上文 多线程编程学习笔记——使用并发集合(三) 假设以下场景,如果在客户端运行程序,最的事情之一是 ...

  6. 多线程编程学习笔记——异步调用WCF服务

    接上文 多线程编程学习笔记——使用异步IO 接上文 多线程编程学习笔记——编写一个异步的HTTP服务器和客户端 接上文 多线程编程学习笔记——异步操作数据库 本示例描述了如何创建一个WCF服务,并宿主 ...

  7. EF学习笔记(九):异步处理和存储过程

    总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上一篇:EF学习笔记(八):更新关联数据 本篇原文:Async and Stored Procedures 为何要采用异步? ...

  8. 多线程编程学习笔记——使用异步IO

    接上文 多线程编程学习笔记——使用并发集合(一) 接上文 多线程编程学习笔记——使用并发集合(二) 接上文 多线程编程学习笔记——使用并发集合(三) 假设以下场景,如果在客户端运行程序,最的事情之一是 ...

  9. 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 ...

随机推荐

  1. CSS 栅格布局

    bootstrap3.0教程之栅格系统原理(布局) http://www.jb51.net/css/152846.html [div+css]栅格化布局样式备用坑 http://www.0773lin ...

  2. oracle修改表字段

    --添加字段 )); -- 修改字段的长度- ));

  3. 状态压缩 HDU 3091

    多组数据 n个点m条边 求有几个经过所有的点的环 最好用__int64 #include<stdio.h> #include<algorithm> #include<st ...

  4. java-io-FileInputStream与FileOutputStream类

    本文转载这里FileInputStream和FileOutputStream类需要注意的问题:  1.FileInputStream和FileOutputStream类分别用来创建磁盘文件的输入流和输 ...

  5. mysql-now()读取当日日期-格式化

    使用系统时间now(): MYSQL 获取当前日期及日期格式获取系统日期: NOW() 格式化日期: DATE_FORMAT(date, format) 注: date:时间字段format:日期格式 ...

  6. 数据库开发基础 SQL Server 数据库的备份、还原与分离、附加

    认识数据库备份和事务日志备份 数据库备份与日志备份是数据库维护的日常工作,备份的目的是 一.在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点 二. ...

  7. 「个人vim插件+配置」

    2016.10.4 filetype indent on syntax on set nu ai ci si set sw= ts= set autochdir set backspace= colo ...

  8. ftp,http,https有啥区别?

    [ftp与http的区别?] HTTP(Hyper Text Transmission Protocol)是超文本传输协议,FTP(FileTransferProtocol)是文件传输协议! HTTP ...

  9. nhibernate 配置nvarchar(max)

     若你真的需要一个nvarchar(max)的sql存储空间时,记得增加 .CustomType("StringClob") Demo:Map(x => x.ContentM ...

  10. Leetcode # 169, 229 Majority Element I and II

    Given an array of size n, find the majority element. The majority element is the element that appear ...