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

技术不断更新迭代,更高效的执行效率越来越被重视,所以对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很好的会我们做了等待和不等待的控制让用起来更加方便,以上整理如有不合理解释 望提出一起讨论亲爱的小伙伴们。

时间: 2024-10-13 05:36:43

.Net中Task使用来提高代码执行效率的相关文章

ABAP怎样提高代码执行效率?

程序的设计思路当然会影响程序的执行速度.程序如何设计与程序员的个人习惯以及业务逻辑有很大的关系.下面我要谈的是如何提高程序中相关代码的执行效率.供参考. 1.杜绝使用 select ….endselect 语句.如果使用时 可以用 select …into cor.. table 替代 : 2.不要在 循环中 使用 select 语句,尽量使用 read table … BINARY SEARCH 替代: 3.select 中 尽量要求字段最少,避免 select * : 4.select 中如

简单十招提高jQuery执行效率

1. 使用最新版本的jQuery jQuery的版本更新很快,你应该总是使用最新的版本.因为新版本会改进性能,还有很多新功能. 下面就来看看,不同版本的jQuery性能差异有多大.这里是三条最常见的jQuery选择语句: $('.elem') $('.elem', context) context.find('.elem') 我们用1.4.2.1.4.4.1.6.2三个版本的jQuery测试,看看浏览器在1秒内能够执行多少次.结果如下: 可以看到,1.6.2版本的运行次数,远远超过两个老版本.尤

提高jQuery执行效率需要注意几点

1. 使用最新版本的jQuery jQuery的版本更新很快,你应该总是使用最新的版本.因为新版本会改进性能,还有很多新功能. 下面就来看看,不同版本的jQuery性能差异有多大.这里是三条最常见的jQuery选择语句: $('.elem') $('.elem', context) context.find('.elem') 我们用1.4.2.1.4.4.1.6.2三个版本的jQuery测试,看看浏览器在1秒内能够执行多少次.结果如下: 可以看到,1.6.2版本的运行次数,远远超过两个老版本.尤

提高python执行效率的方法

python上手很容易,但是在使用过程中,怎么才能使效率变高呢? 下面说一下提高python执行效率的方法,这里只是说一点,python在引入模块过程中提高效率的方法. 例如: 1.我们要使用os模块中的某个属性,那我们可以单独引入os中某个属性 from os import version 同样的我们也可以把引入的模块属性或者对象,直接赋给另外一个变量,使用as方法 from os import version as ver 这样使用方便 2.如果在一个函数中频繁的使用某个模块的属性,那我们可

提高jQuery执行效率

1. 使用最新版本的jQuery jQuery的版本更新很快,你应该总是使用最新的版本.因为新版本会改进性能,还有很多新功能. 下面就来看看,不同版本的jQuery性能差异有多大.这里是三条最常见的jQuery选择语句: $('.elem') $('.elem', context) context.find('.elem') 我们用1.4.2.1.4.4.1.6.2三个版本的jQuery测试,看看浏览器在1秒内能够执行多少次.结果如下: 可以看到,1.6.2版本的运行次数,远远超过两个老版本.尤

用 console.time()和 console.timeEnd() 测试你的 javascript 代码执行效率

无意中学习到了一种测试 javascript 代码执行效率的一种方法,就记下来便于以后使用,用到了console对象中的  time  和  timeEnd  方法 . console.time('myFirstCode');  //开始(开始的名字要和结束的名字要一致哦) //你所要执行的 javascript程序 .... console.timeEnd('myFirstCode');    //结束 在浏览器控制台 console 这个按钮,查看代码执行时间 用 console.time(

用VLD检测你的php代码执行效率~~

在写程序的时候,经常会为是改用empty()还是isset好,或是用单引号还是双引号来显示连接字符串而发出疑问,现在好了.我们其实可以通过程序很科学的得出精确的答案.知道我们的程序到底怎样写效率会更好. VLD全名是Vulcan Logic Disassembler,可以用来检测PHP脚本的执行情况. 1)安装VLD:wget http://pecl.php.net/get/vldtar zxvf vld-0.9.1.tgzcd vld-0.9.1phpize./configuremake in

WORD中五大功能助提高论文写作效率

在编撰研究生学位论文期间,我和身边的同学都曾遇到过因Word排版常识短缺,致使论文修正和排版费尽周折,乃至影响论文编撰进程的事.信任有许多正在编撰或行将编撰学位论文的同学也会有这样的遭受.为了让我们少走弯路,现以Word2003为例(Word2007相似),将论文编撰中非常有用的五项功用作了概括梳理.信任只需你花上一点点时刻学习这些功用,很可能就省去论文排版的一切烦恼,从而将更多的精力和时刻投入到论文质量的进步上. 1.文档构造图 学位论文篇幅长,页数多,在编撰或修正过程中,常常要定位到某一章某

ABAP程序编写过程中怎么提高程序执行效率一

影响ABAP程序的运行效率主要是在程序中大量数据的取得,如果取数不得方法,很影响报表的运行效率,所有优化ABAP程序主要是优化数据取数的方法.下面这几点可以有效的提高取数的效率,从而来提高程序的运行效率. 1.选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 drivingtable)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有3个以上的表连