技术不断更新迭代,更高效的执行效率越来越被重视,所以对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使用来提高代码执行效率的更多相关文章

  1. 提高python执行效率的方法

    python上手很容易,但是在使用过程中,怎么才能使效率变高呢? 下面说一下提高python执行效率的方法,这里只是说一点,python在引入模块过程中提高效率的方法. 例如: 1.我们要使用os模块 ...

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

    无意中学习到了一种测试 javascript 代码执行效率的一种方法,就记下来便于以后使用,用到了console对象中的  time  和  timeEnd  方法 . console.time('m ...

  3. .NET代码执行效率优化

    NET性能优化方面的总结 从2004年底开始接触C#到现在也有2年多的时间了,因为有C++方面的基础,对于C#,我习惯于与C++对比.现在总结一些.NET方面的性能优化方面的经验,算是对这两年多的.N ...

  4. 五十个小技巧提高PHP执行效率

    在项目开发过程中,经常遇到了一些PHP处理程序性能底下的情况,程序运行在centos+nginx环境,虽然这个有很多的原因如:服务器本身配置,运行环境nginx服务,php-fpm配置等等,更多有一点 ...

  5. 提高SQL执行效率的16种方法

      项目中优化sql语句执行效率的方法:1)尽量选择较小的列2)将where中用的比较频繁的字段建立索引3)select子句中避免使用'*'4)避免在索引列上使用计算.not in 和<> ...

  6. 五十个小技巧提高PHP执行效率(一)

    在项目开发过程中,经常遇到了一些PHP处理程序性能底下的情况,程序运行在centos+nginx环境,虽然这个有很多的原因如:服务器本身配置,运行环境nginx服务,php-fpm配置等等,更多有一点 ...

  7. 《跟我学IDEA》四、配置模板(提高代码编写效率)

    上一篇博文,我们学习了idea的一些实用配置,相信大家也对idea这个开发工具有了一个大概的了解.今天我们来学习模板的配置,idea提供很多模板从而提高编写代码的效率,比如说一些经常用的代码及生成文件 ...

  8. 检测你的php代码执行效率

    在写程序的时候,经常会为是改用empty()还是isset好,或是用单引号还是双引号来显示连接字符串而发出疑问,现在好了.我们其实可以通过程序很科学的得出精确的答案.知道我们的程序到底怎样写效率会更好 ...

  9. 压缩JS,提高代码执行速度

    压缩JS java -jar yuicompressor-2.4.jar --type js xxx.js -o xxx.js --charset utf-8 压缩CSS java -jar yuic ...

随机推荐

  1. export的用法

    定义环境变量并且赋值 # export MYENV= //定义环境变量并赋值 # export -p declare -x HOME=“/root“ declare -x LANG=“zh_CN.UT ...

  2. jdk紧急漏洞,XMLDecoder反序列化攻击

    昨天在公司发现了一个jdk中的XMLDecoder反序列化的漏洞,看起来很危险!下面通过两个示例来看看这个漏洞的危害! 示例1:利用XmlDecoder删除本地文件 首先来看这个xmldecoder. ...

  3. Python之实现一个优先级队列

    问题 怎样实现一个按优先级排序的队列? 并且在这个队列上面每次 pop 操作总是返回优先级最高的那个元素 解决方案 下面的类利用 heapq 模块实现了一个简单的优先级队列: import heapq ...

  4. Redis 布隆过滤器

    1.布隆过滤器 内容参考:https://www.jianshu.com/p/2104d11ee0a2 1.数据结构 布隆过滤器是一个BIT数组,本质上是一个数据,所以可以根据下标快速找数据 2.哈希 ...

  5. IIS 承载的服务失败

    如果 IIS 承载的某个服务失败,则可能会看到以下症状之一: 当浏览到 .svc 文件时,不能识别该文件,浏览器显示空白页,或显示文件的文本而不是服务的帮助页,如下面的示例所示.     <%@ ...

  6. 【错误总结】Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.

    大致意思是因为模板里面应该包含一个根元素,使用组件的时候应该用div或p标签包起来

  7. Selenium_随记要点

      1.selenium不支持定位复合元素定位:     像上图的class元素有两个值: op_weather4_twoicon_today  -----    OP_LOG_LINK    像这种 ...

  8. Uninstall NetBeans

    There will be a file named uninstall.sh in /usr/local/netbeans-x.x if you installed netbeans with ro ...

  9. [人物存档]【AI少女】【捏脸数据】朴素风格

    点击下载(城通网盘):AISChaF_20191115113752642.png 点击下载(城通网盘):AISChaF_20191111232359711.png

  10. HTML5中的Canvas和SVG

    Canvas 和 SVG 都允许我们在浏览器中创建图形,但是它们在根本上是不同的. 1 SVG SVG 是一种使用 XML 描述 2D 图形的语言. SVG 基于 XML,这意味着 SVG DOM 中 ...