System.Threading.Tasks.TaskContinuationOptions

作者:追风剑情 发布于:2023-8-23 13:51 分类:C#

System.Threading.Tasks.TaskContinuationOptions
为通过使用 ContinueWith() 方法创建的任务指定行为。

TaskContinuationOptions 枚举
字段 说明
None Default = "Continue on any, no task options, run asynchronously" 指定应使用默认行为。
默认情况下,完成前面的任务之后将安排运行延续任务,而不考虑前面任务的最终 System.Threading.Tasks.TaskStatus。
PreferFairness 提示 System.Threading.Tasks.TaskScheduler 以一种尽可能公平的方式安排任务,这意味着较早安排的任务将更可能较早运行,而较晚安排运行的任务将更可能较晚运行。
LongRunning 指定某个任务将是运行时间长、粗粒度的操作。 它会向 System.Threading.Tasks.TaskScheduler 提示,过度订阅可能是合理的。
AttachedToParent 指定将任务附加到任务层次结构中的某个父级。
DenyChildAttach 如果尝试附有子任务到创建的任务,指定 System.InvalidOperationException 将被引发。
HideScheduler 防止环境计划程序被视为已创建任务的当前计划程序。 这意味着像 StartNew 或 ContinueWith 创建任务的执行操作将被视为 System.Threading.Tasks.TaskScheduler.Default 当前计划程序。
LazyCancellation 在延续取消的情况下,防止延续的完成直到完成先前的任务。
RunContinuationsAsynchronously 指定应异步运行延续任务。 此选项优先于 ExecuteSynchronously。
NotOnRanToCompletion 指定不应在延续任务前面的任务已完成运行的情况下安排延续任务。 此选项对多任务延续无效。
NotOnFaulted 指定不应在延续任务前面的任务引发了未处理异常的情况下安排延续任务。 此选项对多任务延续无效。
OnlyOnCanceled 指定只应在延续任务前面的任务已取消的情况下才安排延续任务。 此选项对多任务延续无效。
NotOnCanceled 指定不应在延续任务前面的任务已取消的情况下安排延续任务。 此选项对多任务延续无效。
OnlyOnFaulted 指定只应在延续任务前面的任务引发了未处理异常的情况下才安排延续任务。 此选项对多任务延续无效。
OnlyOnRanToCompletion 指定只应在延续任务前面的任务已完成运行的情况下才安排延续任务。 此选项对多任务延续无效。
ExecuteSynchronously 指定应同步执行延续任务。 指定此选项后,延续任务将在导致前面的任务转换为其最终状态的相同线程上运行。 如果在创建延续任务时已经完成前面的任务,则延续任务将在创建此延续任务的线程上运行。只应同步执行运行时间非常短的延续任务。

示例

using System;
using System.Threading.Tasks;

namespace ConsoleApp7
{
    class Program
    {
        static void Main(string[] args)
        {
            TestTask().ContinueWith(task => {
                if (task.IsFaulted)
                    Console.WriteLine("任务抛出未处理异常!\n{0}", task.Exception.InnerException.Message);
                else
                    Console.WriteLine("任务执行完毕!"); 
            }, TaskContinuationOptions.None);
            Console.Read();
        }

        public static async Task TestTask()
        {
            //延迟1秒后抛出异常
            await Task.Delay(1000);
            throw new Exception("测试异常");
        }
    }
}

标签: C#

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号