task.factory.startnew()
1.委托:
public delegate int Math(int param1,int param2);定义委托类型
Public int Add(int param1,int param2)//定义同签名函数
{
Return param1+param2;
}
Math math;//声明委托
math=new Math(Add);创建委托对象,与指定进行关联
math(3,4);//调用委托函数
2.官方为了方便 给了Func Action
Func<int,int,int> math=delegate(int param1,int param2)
{
Return param1+param2;
}
Lambda:
Func<int,int,int> math=(param1,param2)=>
{
Return param1+param2;
}
Action的使用如同上面Func的使用一样,没有返回值
Public void Add(int param1,int param2)
{
MessageBox.show((param1+param2).ToString());
}
Action<int,int> math=Add;
math(3,4); public static HomePageResponse HomePage(HomePageRequest request)
{ Task taskGetUnread = Task.Factory.StartNew(() => GetUnReadStatus(businesstypes, zjid, response)); Task taskGetRecommend = Task.Factory.StartNew(() => GetRecommend(response)); Task taskGetRunningStatus = Task.Factory.StartNew(
() => GetRunningStatus(vehicleid, ref runningstatus, ref accumulatorstatus, ref residualoil, ref accumulatorvalue, response, ref getvaluetime)); Task<VehicleDiagnosesData> taskDiagnose = Task.Factory.StartNew<VehicleDiagnosesData>(() => GetDiagnosesData(vehicleid, devicetype, response)); Task<VehicleAffairsData> taskAffairs = Task.Factory.StartNew<VehicleAffairsData>(() => GetOverView(vehicleid, zjid, response)); Task<VehicleDriveData> taskDriveData = Task.Factory.StartNew<VehicleDriveData>(
() => GetTripAnalysis(vehicleid, devicetype, rtripid, ref platenumber, ref forrealtime, response)); Task[] tasks = new Task[] { taskGetUnread, taskGetRecommend, taskGetRunningStatus, taskDiagnose, taskAffairs, taskDriveData};
Task.WaitAll(tasks); WaitAll 是阻塞当前线程等待其它任务完毕的意思;
WhenAll
}
https://docs.microsoft.com/zh-cn/dotnet/api/system.threading.tasks.task.waitall?view=netframework-4.7.2
1、Task用的是线程池,线程池的线程数量的有上限的,这个可以通过ThreadPool修改
int minWorkThreadCount = processorCount * 4;
int minIOWorkThreadCount = processorCount * 2;
ThreadPool.SetMinThreads(minWorkThreadCount, minIOWorkThreadCount);
2、Task.Factory.StartNew不是直接创建线程,创建的是任务,它有一个任务队列,然后通过任务调度器把任务分配到线程池中的空闲线程中,如果任务的数量比线程池中的线程多,线程池的线程数量还没有到达上限,就会创建新线程执行任务。如果线程池的线程已到达上限,没有分配到线程的任务需要等待有线程空闲的时候才执行。
task.factory.startnew()的更多相关文章
- Task.Factory.StartNew的用法
代码: private void button5_Click(object sender, EventArgs e) { ; Task.Factory.StartNew(() => { Mess ...
- Task.Run Vs Task.Factory.StartNew
在.Net 4中,Task.Factory.StartNew是启动一个新Task的首选方法.它有很多重载方法,使它在具体使用当中可以非常灵活,通过设置可选参数,可以传递任意状态,取消任务继续执行,甚至 ...
- Task.Run Vs Task.Factory.StartNew z
在.Net 4中,Task.Factory.StartNew是启动一个新Task的首选方法.它有很多重载方法,使它在具体使用当中可以非常灵活,通过设置可选参数,可以传递任意状态,取消任务继续执行,甚至 ...
- Task.Run与Task.Factory.StartNew的区别
Task是可能有延迟的工作单元,目的是生成一个结果值,或产生想要的效果.任务和线程的区别是:任务代表需要执行的作业,而线程代表做这个作业的工作者. 在.Net 4中,Task.Factory.Star ...
- C# Task.Run 和 Task.Factory.StartNew 区别
Task.Run 是在 dotnet framework 4.5 之后才可以使用,但是 Task.Factory.StartNew 可以使用比 Task.Run 更多的参数,可以做到更多的定制.可以认 ...
- Task.Run Vs Task.Factory.StartNew 【收藏】
在.Net 4中,Task.Factory.StartNew是启动一个新Task的首选方法.它有很多重载方法,使它在具体使用当中可以非常灵活,通过设置可选参数,可以传递任意状态,取消任务继续执行,甚至 ...
- c#4.0 Task.Factory.StartNew 用法
var t1 = Task.Factory.StartNew<string>(() => { return “1111111”; }); //t1.Wait(); t1.Contin ...
- 单线程任务 Task.Factory.StartNew 封装
代码: using log4net; using SunCreate.CombatPlatform.Security; using System; using System.Collections.G ...
- Task.Factory.StartNew和Task.Run
在系统中单开线程进行操作,经常用到Task,发现Task主要有以下两种方法 Task.Factory.StartNew(() => { }); Task.Run(() => { }); 初 ...
随机推荐
- [数据结构]迪杰斯特拉(Dijkstra)算法
基本思想 通过Dijkstra计算图G中的最短路径时,需要指定起点vs(即从顶点vs开始计算). 此外,引进两个集合S和U.S的作用是记录已求出最短路径的顶点,而U则是记录还未求出最短路径的顶点(以及 ...
- JS监听页面----无鼠标键盘动作,自动跳页
function ScreenSaver(settings){ this.settings = settings; this.nTimeout = this.settings.timeout; doc ...
- iOS应用跳转到App Store评分
iOS应用跳转到App Store评分 1.跳转到应用评价页 NSString *urlStr = [NSString stringWithFormat:@"itms-apps://itun ...
- Patterns for Asynchronous MVVM Applications: Commands
Stephen Cleary Download the Code Sample This is the second article in a series on combining async an ...
- Change Data template dynamically
1. Attached Property bound to task state. Any change will dynamically set data template.2. Visual St ...
- Oracle 11g 数据库 shutdown 后立即执行 startup mount 报错的解决办法
最新文章:Virson's Blog 今天在配置Goldengate时Capture进程提示未开启归档日志,然后立即用sys用户登录orcl数据库,然后执行了“shutdown immediate”命 ...
- 解决连锁零售行业IT运维管理四大困境
解决连锁零售行业IT运维管理四大困境 中国近年来,连锁零售行业进入了行业的发展高潮,迅速崛起一批大型连锁业态.而随着IT技术的不断进步,连锁零售企业已经步入IT信息化快速发展的重要阶段:在面对激烈 ...
- iOS开发OC基础:Xcode中常见英文总结,OC常见英文错误
在开发的过程中难免会遇到很多的错误,可是当看到系统给出的英文时,又不知道是什么意思.所以这篇文章总结了Xcode中常见的一些英文单词及词组,可以帮助初学的人快速了解给出的提示.多练习,就肯定能基本掌握 ...
- Lambda动态排序
private static IList<T> IListOrderBy<T>(IList<T> list, string propertyName) where ...
- ant学习笔记-taskdef
1.声明task jar包中指定的task <taskdef name="xmltask“ classname="com.oopsconsultancy.xmltask.an ...