c# - 获取最后一个 Task<> 的结果(继续)?

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

我有这个示例代码:

Task<int> t1= new Task<int>(()=>1);
t1.ContinueWith(r=>1+r.Result).ContinueWith(r=>1+r.Result);
t1.Start();

Console.Write(t1.Result); //1

它显然从 t1 任务返回了 Result。 (这是 1)

但是如何从last 继续任务中获取Result(它应该是3 {1+1+1})

最佳答案

ContinueWith 本身返回一个任务 - Task<int>在这种情况下。你可以做任何事情(或多或少 - 你不能手动 Start 继续,例如)你希望这个任务你可以用“原始”任务完成,包括等待它完成和检查它的结果。

var t1 = new Task<int>( () => 1);
var t2 = t1.ContinueWith(r => 1 + r.Result)
           .ContinueWith(r => 1 + r.Result);

t1.Start();

Console.Write(t1.Result); //1
Console.Write(t2.Result); //3

关于c# - 获取最后一个 Task<> 的结果(继续)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16621600/

相关文章:

c# - 使用数据库中的“选定”成员对组成员资格进行建模

c# - 访问文本框列表

.net - 为什么Quartz.NET创建具有相同线程ID的线程?

C# - 编写 COM 服务器 - 映射到方法的属性

c# - 如何在 TPL 中停止播放并返回正确的值?

c# - 太多任务导致 SQL 数据库超时

c# - Active Directory 通知 - 如何判断更改是否为新用户

c# - 如何在整个 ASP .NET MVC 应用程序中需要授权

.net - 通过 COM 对象将 Delphi 生成的位图返回到 (ASP).Net

c# - Parallel.Foreach 委托(delegate)调用另一个委托(delegate)