任务Task、先后任务
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、先后任务的更多相关文章
- 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特性来同时请求多个不同的接口,然后合并数据:我想这种场景的开发对于对接过其他公司接口的人不会陌生,本人也是列属于之内,更多的是使用最原始 ...
随机推荐
- 海量数据和高并发下的 Redis 业务优化实践
本文内容是我在 6 月 23 日参加的深圳 GIAC 技术大会上演讲的文字稿. 观众朋友们,我是来自掌阅的工程师钱文品,掘金小册<Redis 深度历险>的作者.今天我带来的是分享主题是:R ...
- 多线程--原子操作 Interlocked系列函数
[转]原文地址:http://blog.csdn.net/morewindows/article/details/7429155 线程同步与互斥: 互斥主要指多个线程不能同时访问一个资源,如打印机就是 ...
- python模块hashlib & hmac
Hash,译做“散列”,也有直接音译为“哈希”的.把任意长度的输入,通过某种hash算法,变换成固定长度的输出,该输出就是散列值,也称摘要值.该算法就是哈希函数,也称摘要函数. MD5是最常见的摘要算 ...
- PTA(Basic Level)1023.组个最小数
给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就 ...
- 【转帖】2018全球公有云IaaS榜单出炉:阿里、腾讯、中国电信、金山云列前十
2018全球公有云IaaS榜单出炉:阿里.腾讯.中国电信.金山云列前十 https://news.cnblogs.com/n/628391/ 中国电信貌似就是用的华为的技术 阿里 腾讯 华为 金山 百 ...
- win10 64支持承载网络
在intel官网找到对应型号的网卡驱动. 下载win7版本的,更新驱动.安装完毕之后还要在设备管理里面更新2019 7 30这个版本的驱动. 英特尔® PROSet/无线软件和面向 IT 管理员的驱动 ...
- redis集群搭建和哨兵模式以及AOF和RDB持久化
Redis主从+哨兵模式 1.环境准备 (1)三台独立的linux主机 (2)IP分别为:10.150.200.182 (从) 10.150.200.184(从) 10.150.200.195(主) ...
- leetcode hard
# Title Solution Acceptance Difficulty Frequency 4 Median of Two Sorted Arrays 27.2% Hard ...
- redmine3.4.6安装教程
Redmine 是一个开源的.基于Web的项目管理和缺陷跟踪工具. 参考了网上各种文章,终于成功安装redmine-3.4.6. 1.下载安装railsinstaller-3.4.0.exe 官网下载 ...
- SqlSugar
SqlSugar 官网 SqlSugar 源码 SqlSugar NuGet