TaskStatus

作者:追风剑情 发布于:2017-10-13 14:29 分类:C#

官方示例:任务状态

using System;
using System.Threading;
using System.Threading.Tasks;

namespace TaskTest
{
    class Program
    {
        static void Main(string[] args)
        {
            CancellationTokenSource cts = new CancellationTokenSource();

            // Wait on a single task with a timeout specified.
            Task taskA = Task.Run(() => Thread.Sleep(2000));
            try
            {
                taskA.Wait(1000, cts.Token);       // Wait for 1 second.
                bool completed = taskA.IsCompleted;
                Console.WriteLine("Task A completed: {0}, Status: {1}",
                                 completed, taskA.Status);
                if (!completed)
                    Console.WriteLine("Timed out before task A completed.");

                Console.ReadLine();
            }
            catch (AggregateException)
            {
                Console.WriteLine("AggregateException in taskA.");
            }
            catch (OperationCanceledException e)
            {
                Console.WriteLine("OperationCanceledException in taskA.");
            }
        }
    }
}

运行测试

1111.png


TaskStatus枚举类

namespace System.Threading.Tasks
{
    // 摘要: 
    //     表示 System.Threading.Tasks.Task 的生命周期中的当前阶段。
    public enum TaskStatus
    {
        // 摘要: 
        //     该任务已初始化,但尚未被计划。
        Created = 0,
        //
        // 摘要: 
        //     该任务正在等待 .NET Framework 基础结构在内部将其激活并进行计划。
        WaitingForActivation = 1,
        //
        // 摘要: 
        //     该任务已被计划执行,但尚未开始执行。
        WaitingToRun = 2,
        //
        // 摘要: 
        //     该任务正在运行,但尚未完成。
        Running = 3,
        //
        // 摘要: 
        //     该任务已完成执行,正在隐式等待附加的子任务完成。
        WaitingForChildrenToComplete = 4,
        //
        // 摘要: 
        //     已成功完成执行的任务。
        RanToCompletion = 5,
        //
        // 摘要: 
        //     该任务已通过对其自身的 CancellationToken 引发 OperationCanceledException 对取消进行了确认,此时该标记处于已发送信号状态;或者在该任务开始执行之前,已向该任务的
        //     CancellationToken 发出了信号。 有关更多信息,请参见任务取消。
        Canceled = 6,
        //
        // 摘要: 
        //     由于未处理异常的原因而完成的任务。
        Faulted = 7,
    }
}


标签: C#

Powered by emlog  蜀ICP备18021003号   sitemap

川公网安备 51019002001593号