Csharp/C#教程:C#利用Task实现任务超时多任务一起执行的方法分享

前言

其实Task跟线程池ThreadPool的功能类似,不过写起来更为简单,直观。代码更简洁了,使用Task来进行操作。可以跟线程一样可以轻松的对执行的方法进行控制。

创建Task有两种方式,一种是使用构造函数创建,另一种是使用Task.Factory.StartNew进行创建。

如下代码所示

1.使用构造函数创建Task

Taskt1=newTask(MyMethod);

2.使用Task.Factory.StartNew进行创建Task

Taskt1=Task.Factory.StartNew(MyMethod);

其实这两种方式都是一样的,Task.Factory是对Task进行管理,调度管理这一类的。好学的伙伴们,可以深入研究。这不是本文的范畴,需要的朋友可以进去<计算机技术网(www.ctvol.com)!!>进行学习。

本文将充分使用Task的异步功能,下面来一起看看详细的介绍吧。

代码实现:

1.实现了任务超时退出任务

2.多个任务一起执行

///<summary> ///做事需要ms秒才能完成 ///</summary> ///<paramname="time"></param> ///<returns></returns> staticasyncTask<string>Doing(inttime,stringname="我") { Console.WriteLine(name+"来了"); awaitTask.Delay(TimeSpan.FromMilliseconds(time)); returnstring.Format("这活{1}干了:{0}ms",time,name); } ///<summary> ///设定超时任务如果超时返回 ///</summary> ///<paramname="needTimeOut"></param> ///<returns></returns> staticasyncTask<string>TimeOut(boolneedTimeOut) { Console.WriteLine(needTimeOut); vart=newStopwatch(); t.Start(); vartimeOutTask=Task.Delay(150);//1.设定一个超时的任务 vardoing=Doing(needTimeOut?100:300);//2.真正需要执行的任务 vartask=awaitTask.WhenAny(doing,timeOutTask);//返回任何一个完成的任务 if(task==timeOutTask)//如果超时任务先完成了就返回很可惜他没有完成! { return"很可惜他没有完成!"; } t.Stop(); Console.WriteLine("耗时:"+t.Elapsed.TotalMilliseconds); returnawaitdoing; } ///<summary> ///多任务一起执行 ///</summary> ///<returns></returns> staticasyncTaskTasks() { vart=newStopwatch(); t.Start(); varlist=newList<string>(); vart1=Doing(1000,"1000");//1.定义任务 vart2=Doing(1500,"1500"); vart3=Doing(1200,"1200"); vartasks=new[]{t1,t2,t3};//2.任务组 varprocess=tasks.Select(asynctt=>//3.等待任务结束并保存值 { varresult=awaittt; list.Add(result); }); awaitTask.WhenAll(process);//4.等待处理完全 foreach(variinlist)//5.查看结果 { Console.WriteLine(i); } t.Stop(); Console.WriteLine("耗时:"+t.Elapsed.TotalMilliseconds); }

上述就是C#学习教程:C#利用Task实现任务超时多任务一起执行的方法分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/908111.html

(0)
上一篇 2021年10月25日
下一篇 2021年10月25日

精彩推荐