首页 新闻 会员 周边 捐助

不答也来看看啊:Task中TaskContinuationOptions枚举中“此选项对多任务延续无效”的困惑

0
悬赏园豆:40 [已关闭问题] 关闭于 2013-04-13 21:32

在学习Task时的TaskContinuationOptions枚举发现如下注释:

 

不知道这边的多任务延续指的是什么,我尝试过“两个ContinueWith串联两个任务或者一个Task并行两个ContinueWith”但是结果都是按照TaskContinuationOptions设置的去执行延续任务。

        static void Main(string[] args)
        {
            Task<int> t1 = new Task<int>(() => { return 1; });
            Task<int> t2 = t1.ContinueWith<int>(Work1, TaskContinuationOptions.NotOnRanToCompletion);
            Task<int> t3 = t1.ContinueWith<int>(Work1, TaskContinuationOptions.NotOnRanToCompletion);
            Task<int> t4 = t3.ContinueWith<int>(Work1, TaskContinuationOptions.OnlyOnRanToCompletion);
            t1.Start();

            Console.Read();
        }

        private static int Work1(Task<int> prevTask)
        {
            int result = 0;
            if (prevTask != null && !prevTask.IsFaulted && !prevTask.IsCanceled)
            {
                result = prevTask.Result + 1;
            }
            else
                result = 1;
            Console.WriteLine(result);
            Thread.Sleep(1000);
            return result;
        }

 

!不懂这个多任务延续无效到底是指什么,请大侠帮解释下。

滴答的雨的主页 滴答的雨 | 老鸟四级 | 园豆:3660
提问于:2013-04-06 21:44
< >
分享
所有回答(1)
0

如果调用多任务延续(即:调用TaskFactory或TaskFactory<TResult>的静态ContinueWhenAll和ContinueWhenAny方法)时,NotOn和On六个标识或标识的组合都是无效的。也就是说,无论先驱任务是如何完成的,ContinueWhenAll和ContinueWhenAny都会执行延续任务。

滴答的雨 | 园豆:3660 (老鸟四级) | 2013-04-13 21:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册