C# Task的使用
1。Task的使用
创建一个Task,有三种方式
//第一种
Task t1 = new Task(() =>
{
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff")+ ":Task创建完成1");
});
//启动task
t1.Start(); //第二种
//Task工厂,Task自动启动
Task t2 = Task.Factory.StartNew(() =>
{
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff") + ":Task创建完成2");
}); //第三种
Action action = new Action(Test);
Task t3 = new Task(action);
t3.Start();
public static void Test()
{
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff") +":Task创建完成3"); }
Thread.Sleep();
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff") +":线程完成");
注:t1、t2、t3任务同时开启时,为异步执行。如下图:

如果想同步执行,使用 Wait();
Task t1 = new Task(() =>
{
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff")+ ":Task创建完成1");
});
//启动task
t1.Start(); t1.Wait();
//Task工厂,Task自动启动
Task t2 = Task.Factory.StartNew(() =>
{ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff") + ":Task创建完成2"); });
t2.Wait(); Action action = new Action(Test);
Task t3 = new Task(action);
t3.Start();
t3.Wait(); Thread.Sleep();
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff") +":线程完成"); public static void Test()
{
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff") +":Task创建完成3"); }

当有多个Task进行同步执行时。可使用
Task.WaitAll(t1,t2,t3);
注:这里t1、t2、t3任务之间执行先后顺序为异步。

C# Task的使用的更多相关文章
- Concepts:Request 和 Task
当SQL Server Engine 接收到Session发出的Request时,SQL Server OS将Request和Task绑定,并为Task分配一个Workder.在TSQL Query执 ...
- .Net多线程编程—任务Task
1 System.Threading.Tasks.Task简介 一个Task表示一个异步操作,Task的创建和执行是独立的. 只读属性: 返回值 名称 说明 object AsyncState 表示在 ...
- nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)
本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...
- windows+nginx+iis+redis+Task.MainForm构建分布式架构 之 (nginx+iis构建服务集群)
本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分 ...
- Openstack Periodic Task
Openstack Periodic Task 周期性任务在各个模块的manager.py(computer,scheduler,cell,network)中添加. 添加方法:在模块manager类实 ...
- MapReduce剖析笔记之三:Job的Map/Reduce Task初始化
上一节分析了Job由JobClient提交到JobTracker的流程,利用RPC机制,JobTracker接收到Job ID和Job所在HDFS的目录,够早了JobInProgress对象,丢入队列 ...
- [Java定时器]用Spring Task实现一个简单的定时器.
今天做一个项目的的时候需要用到定时器功能.具体需求是: 每个月一号触发一次某个类中的方法去拉取别人的接口获取上一个月份车险过期的用户.如若转载请附上原文链接:http://www.cnblogs.co ...
- 定时管理器框架-Task.MainForm
入住博客园4年多了,一直都是看别人的博客,学习别人的知识,为各个默默无私贡献自己技术总结的朋友们顶一个:这几天突然觉得是时候加入该队列中,贡献出自己微弱的力量,努力做到每个月有不同学习总结,知识学习的 ...
- Task三个列子的分享
这次要分享的是C#Task任务的几个列子,感觉最实用的是封装的分页任务执行方法,这个方法步奏也是目前在我工作中执行多任务常用的,不知道各位也有这用的情况,那么开始吧. 1.顺序任务执行 //顺序任务执 ...
- webapi+Task并行请求不同接口实例
标题的名称定义不知道是否准确,不过我想表达的意思就是使用Task特性来同时请求多个不同的接口,然后合并数据:我想这种场景的开发对于对接过其他公司接口的人不会陌生,本人也是列属于之内,更多的是使用最原始 ...
随机推荐
- java图形用户界面边界布局管理器
总结:不同方向的组件,所用的板是不同的: package com.moc; //用布局写一个界面 ///运用边界布局 //2个按钮在北,2个按钮在南 //中央一个大按钮 //将同一方向的组件封装后布局 ...
- java冒泡排序算法例子
总结:运行显示数组下标越界说明,数组长度a.length.表示数组的长度,但索引值是要减一的.勿忘 package com.c2; //冒泡排序 //从小到大的顺序排列 public class MA ...
- Cassandra学习五 使用Key的正确姿势
NoSQL一般是反范式的,比如提倡数据冗余,使得不至于写出非常复杂的SQL语句. Cassandra之中一共包含下面5中Key: Primary Key: 用来获取某一行的数据,可以是一列或多列 ...
- git学习2 - 安装
msysgit是Windows版的Git,从https://git-for-windows.github.io下载(网速慢的同学请移步国内镜像),然后按默认选项安装即可. 安装完成后,在开始菜单里找到 ...
- Py修行路 python基础 (二十)模块 time模块,random模块,hashlib模块,OS及sys模块
一.前提介绍: 可以开辟作用域的只有类,函数,和模块 for循环 if,else: 不能开辟自己的作用域 避免程序复用和重复调用,将这些写到一个.py文件中,做成一个模块,进行调 ...
- python's ninteenth day for me 类的组合,继承。
组合: 表示一个类的对象作为另一个类对象的属性. 实例化的过程: 1,创建一个对象. 2,__init__ 给对象添加一些属性,对象默认的名字为self. 3,将self所指向的内存空间返回给实例化他 ...
- IIS监控应用程序池和站点假死,自动重启IIS小工具
文章技术适合初学者.高级的C#开发工程师这些估计都熟悉到烂了,望不要喷. 第一.C#代码要操作IIS 就必须先导入 Microsoft.Web.Administration.dll ,方便控制台程序做 ...
- leetcode144
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...
- c++builder 程序升级到c++builder10Seattle
c++builder 程序升级到c++builder10Seattle的一些技巧提示. http://community.embarcadero.com/blogs/entry/migrating-l ...
- ubuntu12 安装redis和phpRedisAdmin详细流程
一.Ubuntu安装redis(redis默认端口6379) 方式一.直接下载源码,编译(redis可以编译源码之后直接运行,不需要安装) 1.1执行命令,从官网下载源码编译: $ wget http ...