C# TaskContinuationOptions.OnlyonCancelled创建取消

C# TaskContinuationOptions.OnlyonCancelled创建取消,c#,C#,以下代码为异常: exception details: A task was canceled. 只是想知道为什么要添加TaskContinuationOptions。只有取消的参数才能取消任务。没有这个选项,一切都会好起来。我希望这个选项会执行代码,以防有什么东西会取消任务。看起来像是onlyonCancelled创建取消 class Program { static void Main(string[] args) { Co

以下代码为异常:

exception details: A task was canceled.
只是想知道为什么要添加
TaskContinuationOptions。只有取消的
参数才能取消任务。没有这个选项,一切都会好起来。我希望这个选项会执行代码,以防有什么东西会取消任务。看起来像是
onlyonCancelled
创建取消

 class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("starting");
            Task<int> t = Task.Run(() => 42)
                .ContinueWith((i) =>
                {
                    Console.WriteLine("Canceled");
                    return i.Result * 2;
                }, TaskContinuationOptions.OnlyOnCanceled);




            Console.WriteLine("ending");

            try
            {

                Console.WriteLine("ret {0}", t.Result);
            }
            catch (AggregateException ae)
            {
                ae.Handle(ex => { Console.WriteLine("exception details: {0}",ex.Message);
                    return true;
                });
            }

            Console.ReadLine();



        }
类程序
{
静态void Main(字符串[]参数)
{
控制台写入线(“启动”);
Task t=Task.Run(()=>42)
.继续((i)=>
{
控制台。写入线(“取消”);
返回一、结果*2;
},TaskContinuationOptions。仅限已取消);
控制台。写入线(“结束”);
尝试
{
WriteLine(“ret{0}”,t.Result);
}
捕获(聚合异常ae)
{
Handle(ex=>{Console.WriteLine(“异常详细信息:{0}”,ex.Message);
返回true;
});
}
Console.ReadLine();
}

onlyonCancelled
告诉
ContinueWith
方法中定义的第二个任务仅在父任务被取消时运行


由于第一个任务未被取消,第二个任务将被取消,因为它不应该运行。

onlyonCancelled
告诉在
ContinueWith
方法中定义的第二个任务,只有在父任务被取消时才运行

由于第一个任务未被取消,第二个任务将被取消,因为它不应运行