首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Task.ContinueWith查询

Task.ContinueWith查询
EN

Stack Overflow用户
提问于 2014-08-10 16:33:24
回答 1查看 259关注 0票数 0

我是第三方物流新手,在理解.continueWith方面需要一些帮助。请你告诉我第一项任务--继续执行--有什么问题吗?第二项如何正确?

代码语言:javascript
复制
List<int> input = new List<int> { 1, 2, 3, 4, 5 };

 //Gives cast error at the second continuation: cannot implicitly convert 
 //Task to Task<List<int>>
    Task<List<int>> task = Task.Factory.StartNew<List<int>>(
        (state) => { return (List<int>)state; }, input)

        .ContinueWith<List<int>>(
        (prevTask => { return (List<int>)prevTask.Result; }))

        .ContinueWith(
        (prevTask => { Console.WriteLine("All completed"); }));

    //Works fine
    Task<List<int>> task1 = Task.Factory.StartNew<List<int>>(
        (state) => { return (List<int>)state; }, input);

    task1.ContinueWith<List<int>>(
        (prevTask => { return (List<int>)prevTask.Result; }))

        .ContinueWith(
        (prevTask => { Console.WriteLine("All completed"); }));
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-10 16:41:19

使用ContinueWith()完成的第一个方法调用链,它返回一个不能分配给Task<List<int>>Task对象

代码语言:javascript
复制
Task.Factory.StartNew<List<int>>(...) // returns Task<List<int>>
    .ContinueWith<List<int>>(...) // returns Task<List<int>>
    .ContinueWith(...); // returns Task

但是在第二种情况下,最后一个ContinueWith的结果没有被分配给任何东西,所以工作得很好。

对于第一个工作,要么将task定义为Task

代码语言:javascript
复制
Task task = Task.Factory.StartNew<List<int>>(
    (state) => { return (List<int>)state; }, input)

    .ContinueWith<List<int>>(
    (prevTask => { return (List<int>)prevTask.Result; }))

    .ContinueWith(
    (prevTask => { Console.WriteLine("All completed"); }));

或者让最后一个调用成为通用调用:

代码语言:javascript
复制
Task<List<int>> task = Task.Factory.StartNew<List<int>>(
    (state) => { return (List<int>)state; }, input)

    .ContinueWith<List<int>>(
    (prevTask => { return (List<int>)prevTask.Result; }))

    .ContinueWith<List<int>>(
    (prevTask => { Console.WriteLine("All completed"); }));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25230728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档