LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

[点晴永久免费OA]C# Task 简介:不返回值且通常异步执行的单个操作

admin
2024年3月30日 0:2 本文热度 21

摘要


Task是微软在.Net 4.0时代推出来的,也是微软极力推荐的一种多线程的处理方式,Task看起来像一个Thread,实际上,它是在ThreadPool的基础上进行的封装,Task的控制和扩展性很强,在线程的延续、阻塞、取消、超时等方面远胜于ThreadThreadPool

正文


类 Task 表示不返回值且通常异步执行的单个操作。Task对象是.NET Framework 4 中首次引入的基于任务的异步模式的核心组件之一。由于对象执行 Task 的工作通常在线程池线程上异步执行,而不是在主应用程序线程上同步执行,因此可以使用 Status 属性以及 IsCanceled、 IsCompleted和 IsFaulted 属性来确定任务的状态。大多数情况下,lambda 表达式用于指定任务要执行的工作。

TaskStatus表示 Task 的生命周期中的当前阶段。

Canceled6该任务已通过对其自身的 CancellationToken 引发 OperationCanceledException 对取消进行了确认,此时该标记处于已发送信号状态;或者在该任务开始执行之前,已向该任务的 CancellationToken 发出了信号。有关详细信息,请参阅任务取消。
Created0该任务已初始化,但尚未被计划。
Faulted7由于未处理异常的原因而完成的任务。
RanToCompletion5已成功完成执行的任务。
Running3该任务正在运行,但尚未完成。
WaitingForActivation1该任务正在等待 .NET 基础结构在内部将其激活并进行计划。
WaitingForChildrenToComplete4该任务已完成执行,正在隐式等待附加的子任务完成。
WaitingToRun2该任务已被计划执行,但尚未开始执行。

一个例子

private void btnRun_Click(object sender, EventArgs e)

{

    Task t = new Task(() =>

    {

        this.Invoke(new Action(() =>

        {

            txtStatus.AppendText("任务开始..."+System.Environment.NewLine);

        }));

        Thread.Sleep(1000);

    });

    t.Start();

    t.ContinueWith(t =>

    {

        this.Invoke(new Action(() =>

        {

            txtStatus.AppendText("IsCanceled="+ t.IsCanceled + ",IsCompleted="+ t.IsCompleted + ",IsFaulted="+ t.IsFaulted);

            txtStatus.AppendText("任务完成..." + System.Environment.NewLine);

        }));

    });

txtStatus.AppendText("Run 完成..." + System.Environment.NewLine);

}


该文章在 2024/3/30 0:03:01 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved