专业网站建设品牌,18年专业建站经验,服务6000+客户--广州松河
免费热线:400-963-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
位置:
广州松河
>
技术支持
> c#中任务Task
c#中任务Task
来源:网络整理 时间:2023/2/14 0:32:41 共
3862
浏览
1.通过任务开启线程
1.1 创建Task对象
首先创建任务对象,任务对象调用Start()方法开启任务线程。
class Program
{
static void DownLoad(object str)
{
Console.WriteLine("DownLoad Begin ID = " + Thread.CurrentThread.ManagedThreadId + " " + str);
Thread.Sleep(1000);
Console.WriteLine("DownLoad End");
}
static void Main(string[] args)
{
//创建任务
Task task = new Task(DownLoad, "人民日报");
//启动任务
task.Start();
Console.WriteLine("Main");
Console.ReadKey();
}
}
运行结果
1.2 任务工厂TaskFactory
首先创建任务工厂,然后调用StartNew()方法开启任务线程。
class Program
{
static void DownLoad(object str)
{
Console.WriteLine("DownLoad Begin ID = " + Thread.CurrentThread.ManagedThreadId + " " + str);
Thread.Sleep(1000);
Console.WriteLine("DownLoad End");
}
static void Main(string[] args)
{
//创建任务工厂
TaskFactory taskFactory = new TaskFactory();
//开始新的任务
taskFactory.StartNew(DownLoad, "纽约时报");
Console.WriteLine("Main");
Console.ReadKey();
}
}
运行结果
2.连续任务
如果一个任务的执行依赖于另一个任务,即任务的执行有先后顺序。此时,我们可以使用连续任务。
task.ContinueWith(ReadNews)表示一个任务task结束后,才开始执行另一个任务。
class Program
{
static void DownLoad(object str)
{
Console.WriteLine("DownLoad Begin ID = " + Thread.CurrentThread.ManagedThreadId + " " + str);
Thread.Sleep(1000);
Console.WriteLine("DownLoad End");
}
static void ReadNews(Task obj)
{
Thread.Sleep(1000);
Console.WriteLine("Read News");
}
static void Main(string[] args)
{
Task task = new Task(DownLoad, "人民日报");
Task task2 = task.ContinueWith(ReadNews);
task.Start();
Console.ReadKey();
}
}
执行结果
3.任务的层次结构
在一个任务中可以启动子任务,两个任务异步执行。默认情况下,子任务(即由外部任务创建的内部任务)将独立于其父任务执行。使用TaskCreationOptions.AttachedToParent显式指定将任务附加到任务层次结构中的某个父级。
如果父任务执行完了但是子任务没有执行完,则父任务的状态会被设置为WaitingForChildrenToComplete,只有子任务也执行完了,父任务的状态才会变成RunToCompletion。
class Program
{
static void DownLoad(object str)
{
Console.WriteLine("Parent Begin ID = " + Thread.CurrentThread.ManagedThreadId + " " + str);
Task child = new Task(ChildWork, TaskCreationOptions.AttachedToParent);
child.Start();
Thread.Sleep(1000);
Console.WriteLine("Parent End");
}
static void ChildWork()
{
Console.WriteLine("Child begin");
Thread.Sleep(5000);
Console.WriteLine("Child end");
}
static void Main(string[] args)
{
Task task = new Task(DownLoad, "人民日报");
task.Start();
Thread.Sleep(2000);
Console.WriteLine(task.Status);
Thread.Sleep(4000);
Console.WriteLine(task.Status);
Console.ReadKey();
}
}
运行结果:
4.任务的执行结果
使用Task的泛型版本,可以返回任务的执行结果。
下面例子中的TaskWithResult的输入为object类型,返回一个元组Tuple<int, int>。
定义调用TaskWithResult的任务时,使用泛型类Task<Tuple<int, int>>,泛型的参数定义了返回类型。通过构造函数,传递TaskWithResult,构造函数的第二个参数定义了TaskWithResult的输入值。
任务完成后,通过Result属性获取任务的结果。
class Program
{
static Tuple<int, int> TaskWithResult(object obj)
{
Tuple<int, int> div = (Tuple<int, int>)obj;
Thread.Sleep(1000);
return Tuple.Create<int, int>(div.Item1 + div.Item2, div.Item1 - div.Item2);
}
static void Main(string[] args)
{
var task = new Task<Tuple<int, int>>(TaskWithResult, Tuple.Create<int, int>(8, 3));
task.Start();
Console.WriteLine(task.Result);
task.Wait();
Console.WriteLine("Result: {0} {1}", task.Result.Item1, task.Result.Item2);
Console.ReadLine();
}
}
执行结果:
版权说明:
本网站凡注明“广州松河 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
相关主题:
龙口网站制作收费
梅州佛山网站制作
冀州怎样制作网站
唯美视频制作网站
阿尔山网站首页制作
清溪网站制作报价
西安网站设制作
网站会员怎么制作
菜谱制作公司网站
南京sem网站制作
·上一条:
C#Task异步编程
|
·下一条:
对于sqldependency类的使用(通过它来监听数据库的变化)
同类资讯
电子商务按主体分类有哪些_CSS学习
html图片宽度多少像素合适_CSS学习
277kk28f58ti说明书_CSS学习
html显示文本的有哪些_CSS学习
如何在asp文件中调用html文件_CSS学习
腰间盘突出压迫神经疼_CSS学习
暗黑2怎么洗掉符文_CSS学习
html中地址的type类型是_CSS学习
html怎么更改高度_CSS学习
css样式表能兼容所有浏览器么_CSS学习
但很快涨停板又打开了_CSS学习
做网文编辑需要什么条件_CSS学习
photoshop中切片工具怎么用_CSS学习
dw怎么把文字放到上面_CSS学习
想买个骁龙87012_CSS学习
csgo所有武器的指令_CSS学习
用js做网页和dw有什么区别_CSS学习
HTML5页面输出方式有哪几种_CSS学习
hb表格边框粗细怎么调_CSS学习
ASP网页是在什么执行的_CSS学习
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-963-0016
邮箱:sales@itwy.com
QQ:250211130
微信:18520775521
Copyright © 广州松河信息科技有限公司 2005-2026 版权所有
粤ICP备16019765号
广州松河信息科技有限公司 版权所有
18520775521
QQ洽谈
sales@itwy.com