当前位置: 首页 > news >正文

溧水做网站施工建设集团网站

溧水做网站,施工建设集团网站,怎样用dw做网站导航条,欧美建设网站【.NET Core】Task应用详解 文章目录 【.NET Core】Task应用详解一、概述二、Task用法应用2.1 通过New实例化Task2.2 通过Factory中StartNew方法2.3 通过Run方法 三、让Task任务按顺序执行四、通过异步Run方法异步执行顺序Task五、创建带有返回值的TaskTResult六、Task…【.NET Core】Task应用详解 文章目录 【.NET Core】Task应用详解一、概述二、Task用法应用2.1 通过New实例化Task2.2 通过Factory中StartNew方法2.3 通过Run方法 三、让Task任务按顺序执行四、通过异步Run方法异步执行顺序Task五、创建带有返回值的TaskTResult六、Task常用的属性与方法七、Task总结七、参考资料 一、概述 Task任务是一个类似于Thead线程或ThreadPool线程池概念是一个异步执行的工具类。它是一个更轻的类线程工具。Task提供简化编写并发和异步代码的工具类。它包含的类型为Task和TaskTResult。TaskFactory类提供用于创建和启动Task任务的静态方法。TaskScheduler类提供默认线程调度基础结构。 Task表示不返回值且通常异步执行的单个操作。Task对象是.NET Framework4中首次引入的基于任务的异步模式的核心组件之一。由于对象执行Task的工作通常在线程池线程上异步执行而不是在main应用程序线程上同步执行因此可以使用Statu属性以及IsCanceled、IsCompleted和IsFaulted属性来确定任务的状态。 二、Task用法应用 Task基本使用可以通过New实例化一个Task的应用也使用通过StartNew来使用Task还有一种是通过Run使用Task。下面实例通过代码演示三种Task基本的应用。 2.1 通过New实例化Task Task task1new Task((){Thread.Sleep(1000);Debug.WriteLine(执行第一个Task任务.) }); Debug.WriteLine($Task IDtask1.id)输出结果 线程 0x6704 已退出返回值为 0 (0x0)。 第一个任务ID13 执行第一个Task任务2.2 通过Factory中StartNew方法 Task task2new Task((){Thread.Sleep(1500);Debug.WriteLine(执行第二个Task任务.) }); Debug.WriteLine($Task2 IDtask2.id);2.3 通过Run方法 Task task3new Task((){Thread.Sleep(2000);Debug.WriteLine(执行第三个Task任务.); }) Debug.WriteLine($Task3 IDtask3.id);上面三种方法都可以创建一个Task应用。 类Task提供的异常三种创建任务和执行任务的方法。出于性能原因Task.Run或TaskFactory.StartNew方法是创建和计划计算任务的首选机制但对于必须分离创建和计划的方案才考虑使用Task.Start方法计划任务以供以后执行。 三、让Task任务按顺序执行 Task task1 new Task(() { Thread.Sleep(1000);Debug.WriteLine(执行第一个Task任务); }); Task task2 new Task(() {Thread.Sleep(5000);Debug.WriteLine(执行第二个Task任务); }); Task task3 new Task(() {Thread.Sleep(2000);Debug.WriteLine(执行第三个Task任务); }); Task task4 new Task(() {Thread.Sleep(1000);Debug.WriteLine(执行第四个Task任务); });IListTask tasks new ListTask(); tasks.Add(task1); tasks.Add(task2); tasks.Add(task3); tasks.Add(task4); foreach (var task in tasks) {task.Start();task.Wait(); }如果想要Task按顺序执行需要给Task加上Wait方法然后让其阻塞等待完成后在执行下一个Task任务。 四、通过异步Run方法异步执行顺序Task public async void RunTask() {await Task.Run(async () {await Task.Delay(1000);Debug.WriteLine(第1个线程执行);});await Task.Run(async () {await Task.Delay(8000);Debug.WriteLine(第2个线程执行);});await Task.Run(async () {await Task.Delay(2000);Debug.WriteLine(第3个线程执行);});await Task.Run(async () {await Task.Delay(3000);Debug.WriteLine(第4个线程执行);}); }通过异步await 和async通过 Task.Run创建按次序的Task任务。 五、创建带有返回值的Task Task和Task暴露静态的Factory属性该属性返回一个默认的TaskFactory实例以便调用Task.Factory.StartNew()方法。Task和Taste有一个属性Result属性该属性包含了运算的结果。任务是异步运行的可能以任意时序执行完。若Result属性在运行结束前被访问这个属性会阻塞调用线程到该值可访问。 public async void RunTask() {TaskDouble[] taskArray { TaskDouble.Factory.StartNew(() DoComputation(10.0)),TaskDouble.Factory.StartNew(() DoComputation(100.0)),TaskDouble.Factory.StartNew(() DoComputation(1000.0)) };foreach (var task in taskArray){double result task.Result;Debug.WriteLine(result);} }六、Task常用的属性与方法 6.1 AsyncStates属性 获取在创建Task时提供的状态对象如果未提供则为null。 6.2 CompletedTask属性 获取一个已成功的任务 6.2 CurrentId属性 返回当前正在执行Task的ID 6.3 Factory属性 提供对用于创建和配置Task和Task实例的工厂方法的访问 6.4 Id属性 获取此Task实例的ID 6.5 IsCanceled属性 获取此Task实例是否由于被取消的原因而完成执行 6.6 IsCompleted属性 获取一个值它表示是否已完成任务 6.7 IsCompletedSuccessfully属性 了解任务是否运行到完成 6.7 IsFaulted属性 获取Task是否由于未经处理异常的原因而完成 6.8 Status属性 表示Task的生命周期中的当前阶段 0 Created 该任务已初始化但尚未被计划 1 WaitingForActivation 该任务正在等待 .NET 基础结构在内部将其激活并进行计划。 2 WaitingToRun 该任务已被计划执行但尚未开始执行 3 Running 该任务正在运行但尚未完成 4 WaitingForChildrenToComplete 该任务已完成执行正在隐式等待附加的子任务完成 5 RanToCompletion 已成功完成执行的任务 6 Canceled 该任务已通过对其自身的 CancellationToken 引发 OperationCanceledException 对取消进行了确认此时该标记处于已发送信号状态或者在该任务开始执行之前已向该任务的 CancellationToken 发出了信号 7 Faulted 由于未处理异常的原因而完成的任务 6.9 ConfigureAwait(Boolean) 方法 配置用于等待此Task的awaiter 6.10 ContinueWith(ActionTask,Object,Object,TaskScheduler) 方法 创建一个在目标Task完成时接收调用方提供的状态信息和取消标记并执行的延续任务。延续任务根据一组指定的条件执行并使用指定的计划程序。 6.11 Delay(TimeSpanCancellationToken) 方法 创建一个在指定的毫秒数后完成的可取消任务或创建一个指定的时间间隔后完成的可取消的任务。 6.12 Run(ActionCancellationToken) 方法 将在线程池上运行的指定工作排队并返回代表该工作的 Task对象。 可使用取消标记来取消工作如果尚未启动。 6.13 Start(TaskScheduler) 方法 启动Task, 并将它安排到当前的TaskScheduler中执行 6.14 Wait(Task[],CancellationToken) 方法 等待提供的所有Task对象在指定的毫秒数内完成执行或等到取消等待 6.15 Yield()方法 创建异步产生当前上下文的等待任务。 七、Task总结 Task是并行编程的一个重要的特性主要的特点有一下几点 底层是在线程池中运作的且微软用了一些增强性能的算法这点使你在大部分场景中可以无忧地使用它实际使用往往会结合lambda表达式结合lambda表达式在循环中使用计数器时需要注意lambda内使用计数器是其引用。可以使用自定义传参给任务来回避这种情况 在实际的开发中还需要根据实际的应用场景选项合适的属性和方法希望你通过本文能完全掌握Task的应用。 七、参考资料 https://learn.microsoft.com/zh-cn/dotnet/standard/parallel-programming/task-parallel-library-tpl
http://www.pierceye.com/news/740008/

相关文章:

  • 做的网站每年需要续费idc网站源码
  • 备案主体负责人和网站负责人新网站 seo
  • 网站后台有什么用wordpress 不显示账号名
  • 另类小说 Wordpress长沙seo步骤
  • 网站建设7个基37网游官网
  • 网站设计存在的问题建筑设计私活平台
  • 网站如何做淘宝支付宝wordpress多站点不显示
  • 关于设计的网站免费注册公司
  • 网站建设排名北京网站排名降级的原因有哪些
  • 介绍网页设计做seo推广网站
  • 建立个人博客网站wordpress东城东莞网站建设
  • 从哪些方面建设网站泰州东方医院
  • 分类信息网站系统cmsWordPress新闻面包屑主题
  • wordpress 多标签关键字优化策略
  • idea15网站开发网站如何提升seo排名
  • 谁有网站推荐一下好安阳刚刚发生的事
  • 博客网站快速排名临邑县住房和城乡建设局网站
  • 二手网站建设方案营销网站建设服务平台
  • 遵化建设局网站濮阳新闻综合频道
  • 百度云如何做网站论文网站建设与运营
  • 网站开发环境实验报告注册公司流程和费用是多少
  • 下载一个网站学院网站建设的作用
  • 济南专业网站优化花西子的网络营销策略
  • 武城网站建设费用网页设计试题及答案
  • 郑州外贸网站建设公司搜索引擎排名的三大指标
  • 温州专业微网站制作电台 主题 wordpress
  • wordpress做网站过程阳江网上车管所
  • 网站抓取qq上海自贸区注册公司流程
  • 深圳网站设计推荐刻烟台制作网站有哪些
  • 网站注册系统源码卢松松博客源码 wordpress博客模板