Task类似后台线程。

using System;
using System.Threading;
using System.Threading.Tasks;//引用命名空间 namespace ConsoleApplication3
{
class Program
{
void DownloadFile()
{
Console.WriteLine("任务开始" );
Thread.Sleep();
Console.WriteLine("任务结束");
}
static void Main(string[] args)
{
Program p = new Program();//类的对象,方便引用非静态成员
Task t = new Task(p.DownloadFile);//创建任务
t.Start();
//TaskFactory tf = new TaskFactory();//任务工厂,方便创建多个Task
//Task t = tf.StartNew(p.DownloadFile);
//Task t1 = tf.StartNew(p.DownloadFile);
//Task t2 = tf.StartNew(p.DownloadFile); Console.ReadKey();
}
}
}

先后任务:一个任务依赖于另一个任务。即有先后顺序。使用ContinueWith

后继任务,方法参数不可省略,类似线程池

using System;
using System.Threading;
using System.Threading.Tasks;//引用命名空间 namespace ConsoleApplication3
{
class Program
{
void DoFirst()
{
Console.WriteLine("任务1开始" );
Thread.Sleep();
}
void DoSecond(Task a)//后继任务,参数不可省略,类似线程池
{
Console.WriteLine("任务2开始");
Thread.Sleep();
}
void DoThird(Task a)
{
Console.WriteLine("任务3开始");
Thread.Sleep();
}
static void Main(string[] args)
{
Program p = new Program();//类的对象,方便引用非静态成员
Task t1 = new Task(p.DoFirst);//任务1
Task t11 = t1.ContinueWith(p.DoSecond);//任务1结束后,异步执行后继任务2、3
Task t12 = t1.ContinueWith(p.DoThird);
Task t111 = t11.ContinueWith(p.DoSecond);//任务2结束后,才执行 t1.Start(); Console.ReadKey();
}
}
}

一个任务A中启动一个新任务B,两个任务异步执行,可认为同时执行。

using System;
using System.Threading;
using System.Threading.Tasks;//引用命名空间 namespace ConsoleApplication3
{
class Program
{
void DoFirst()//2s
{
Console.WriteLine("任务1开始");
Task t2 = new Task(DoSecond);//任务1中启动了任务2
t2.Start();//异步执行,可以认为1、2同时启动
Thread.Sleep();
Console.WriteLine("任务1结束");
}
void DoSecond()//5s
{
Console.WriteLine("任务2开始");
Thread.Sleep();
Console.WriteLine("任务2结束");
}
static void Main(string[] args)
{
Program p = new Program();//类的对象,方便调用成员
Task t1 = new Task(p.DoFirst);//任务1启动
t1.Start();
Console.ReadKey();
}
}
}

更深入内容参考:

https://blog.csdn.net/qq3401247010/article/details/81542461

https://blog.csdn.net/EthanWhite/article/details/52171262

任务Task、先后任务的更多相关文章

  1. Concepts:Request 和 Task

    当SQL Server Engine 接收到Session发出的Request时,SQL Server OS将Request和Task绑定,并为Task分配一个Workder.在TSQL Query执 ...

  2. .Net多线程编程—任务Task

    1 System.Threading.Tasks.Task简介 一个Task表示一个异步操作,Task的创建和执行是独立的. 只读属性: 返回值 名称 说明 object AsyncState 表示在 ...

  3. nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)

    本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...

  4. windows+nginx+iis+redis+Task.MainForm构建分布式架构 之 (nginx+iis构建服务集群)

    本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分 ...

  5. Openstack Periodic Task

    Openstack Periodic Task 周期性任务在各个模块的manager.py(computer,scheduler,cell,network)中添加. 添加方法:在模块manager类实 ...

  6. MapReduce剖析笔记之三:Job的Map/Reduce Task初始化

    上一节分析了Job由JobClient提交到JobTracker的流程,利用RPC机制,JobTracker接收到Job ID和Job所在HDFS的目录,够早了JobInProgress对象,丢入队列 ...

  7. [Java定时器]用Spring Task实现一个简单的定时器.

    今天做一个项目的的时候需要用到定时器功能.具体需求是: 每个月一号触发一次某个类中的方法去拉取别人的接口获取上一个月份车险过期的用户.如若转载请附上原文链接:http://www.cnblogs.co ...

  8. 定时管理器框架-Task.MainForm

    入住博客园4年多了,一直都是看别人的博客,学习别人的知识,为各个默默无私贡献自己技术总结的朋友们顶一个:这几天突然觉得是时候加入该队列中,贡献出自己微弱的力量,努力做到每个月有不同学习总结,知识学习的 ...

  9. Task三个列子的分享

    这次要分享的是C#Task任务的几个列子,感觉最实用的是封装的分页任务执行方法,这个方法步奏也是目前在我工作中执行多任务常用的,不知道各位也有这用的情况,那么开始吧. 1.顺序任务执行 //顺序任务执 ...

  10. webapi+Task并行请求不同接口实例

    标题的名称定义不知道是否准确,不过我想表达的意思就是使用Task特性来同时请求多个不同的接口,然后合并数据:我想这种场景的开发对于对接过其他公司接口的人不会陌生,本人也是列属于之内,更多的是使用最原始 ...

随机推荐

  1. Laravel-Admin图片上传时的问题

    关于laravel-admin进入有图片上传页面时,会提示未配置存储路径等信息.此时需要去配置. 查看config/admin.php里面有 'upload' => [ // Disk in ` ...

  2. [转帖]从Intel和ARM争霸,谈芯片前世今生

    从Intel和ARM争霸,谈芯片前世今生 http://www.itpub.net/2019/07/24/2476/ 长文预警, 写的非常好.. 我尽量写得轻松一些,因为其实这个话题很有趣,仔细探究起 ...

  3. Codeforces 817+818(A~C)

    (点击题目即可查看原题) 817A Treasure Hunt 题意:给出起点和终点,每次移动只能从 (a,b)移动至(a+x,b+y) , (a+x,b-y) , (a-x,b+y) , (a-x, ...

  4. Django基础之视图(views)层、模板层

    目录 Django基础之视图(views)层.模板层 JsonResponse 向前端返回一个json格式字符串的两种方式 重写Django中的json的某个方法 form表单上传文件 FBV与CBV ...

  5. Java continue 、break、标签

    任何迭代语句的主体部分都可以用break和continue控制循环流程,其中break用于强行退出循环,不执行循环中剩余的语句, 而continue则停止当前的迭代,然后退回循环起始处,开始下一次迭代 ...

  6. the Percentage Layout of Android (安卓的百分比布局)

    不用wrap_content.match_parent来指定 控件的大小, 1.在app/bulid.gradle文件的dependencies中添加 compile 'com.android.sup ...

  7. PostMan测试Web Service

    1.设置URL 2.设置请求模式:Post 3.设置Header:添加 Content-Type ,值为 text/xml;charset=utf-8 4.设置Body:勾选raw 5.输入Body内 ...

  8. freemarker的replace的使用

    1.replace替换: <#assign name="sdfsfdsa\ndfsafs\n"> 例子:${name?replace("\n",&q ...

  9. 转载Google TPU论文

    选自 Google Drive 作者:Norman P. Jouppi 等 痴笑@矽说 编译 该论文将正式发表于 ISCA 2017 从去年七月起,Google就号称了其面向深度学习的专用集成电路(A ...

  10. java apache-commons-collections中Map辅助类的使用

    前言 apache-commons-collections中Map辅助类,很是有用.尽管我们通过原生Map经过业务逻辑处理也能达到相同的作用与效果,但毕竟作为一个开源的工具类辅助类,对它有个了解还是有 ...