如何继续使用前因的状态对象?

时间:2013-02-15 21:38:59

标签: c# .net-4.0 task-parallel-library

有没有办法将状态对象传递给.net 4.0中的ContinueWith函数?此选项在.net 4.5中可用。

我查看了.net 4.0的源代码,它在创建继续任务时将状态对象硬编码为null。

2 个答案:

答案 0 :(得分:3)

{4}的.NET 4版本不提供此选项。

然而,您可以使用闭包或将数据包装到ContinueWith本身,具体取决于生成的方式,以便访问在先前任务中创建的状态数据。

答案 1 :(得分:1)

任务的AsyncState成员应该是您提供原始任务的状态的值,即使在ContinueWith中作为先行任务引用时也是如此。这适用于.Net 4.0。

Task.Factory
    .StartNew( state => ..., myState)
    .ContinueWith( task => task.AsyncState == myState);