分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

.Net中Task使用来提高代码执行效率

发布时间:2023-09-06 01:26责任编辑:白小东关键词:暂无标签

技术不断更新迭代,更高效的执行效率越来越被重视,所以对Task的使用进行了简单使用做了整理与大家分享。

.Net 中有了Task后使多线程编程更简单使用和操作,下面粘上代码进行简单说明:

 ???????/// <summary> ???????/// 主线程执行 ???????/// </summary> ???????private static void GetVaule() ???????{ ???????????Console.WriteLine("我不是task,我的信息是,线程{0} 运行在线程id为{1}的线程上。是否是线程池中线程?:{2}", ?????????????????"同步", Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.IsThreadPoolThread);//主线程2
 ???????} ???????static int TaskMethod(string name) ???????{ ???????????Console.WriteLine("Task {0} 运行在线程id为{1}的线程上。是否是线程池中线程?:{2}", ???????????name, Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.IsThreadPoolThread); ???????????Thread.Sleep(2000); ???????????Console.WriteLine("睡醒后,的位置" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff") + "");// task线程1
???????????return 42;

???????}
 ???????/// <summary> ???????/// 开启新线程执行。 ???????/// </summary> ???????/// <param name="name"></param> ???????/// <returns></returns> ???????static ??Task<int> CreateTask(string name) ???????{ ???????????return new Task<int>(() => TaskMethod(name)); ???????}

  

以上方法是为实例准备的方法调用 主方法调用

 

 ???????????Task<int> task = CreateTask("Task 3"); ???????????Console.WriteLine(task.Status); ???????????task.Start(); ???????????GetVaule(); ???????????Console.WriteLine("主线和Id:" + Thread.CurrentThread.ManagedThreadId + ",IsCurrentThreadPool:" + Thread.CurrentThread.IsThreadPoolThread + ""); //主线程1 ???????????Console.WriteLine("我的位置1_"+DateTime.Now+""); ???????????Console.WriteLine("Result is1: {0}", task.Result); // part_001 ???????????Console.WriteLine("我的位置"); ???????????while (!task.IsCompleted) ???????????{ ???????????????Console.WriteLine(task.Status); ???????????????Thread.Sleep(TimeSpan.FromSeconds(0.5)); ???????????} ???????????Console.WriteLine(task.Status); ???????????//int result = task.Result; // part_002 ???????????//Console.WriteLine("Result is: {0}", result); ???????????Console.ReadKey();

  

执行后大家可以发现//主线程1和GetVaule中//主线程2 输出的线程 Id 是相同的 与TaskMethod 中// task线程1 输出信息是不同的 说明确实是开启了多线程在执行

 

下面着重说一下其使用优点 task.Start() 后调用的CreateTask 会新开线和执行,如果不执行 part_001 (Console.WriteLine("Result is1: {0}", task.Result);)主线和不会受阻而执行主代码块下面的代码,子方法CreateTask 也在执行,如果执行part_001 则主线程会等待 CreateTask

执行完再执行后续代码,Task很好的会我们做了等待和不等待的控制让用起来更加方便,以上整理如有不合理解释 望提出一起讨论亲爱的小伙伴们。

.Net中Task使用来提高代码执行效率

原文地址:http://www.cnblogs.com/liyanbofly/p/7879119.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved