Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取最后一个任务的结果<&燃气轮机;(续)?_C#_.net_Task Parallel Library_Task - Fatal编程技术网

C# 获取最后一个任务的结果<&燃气轮机;(续)?

C# 获取最后一个任务的结果<&燃气轮机;(续)?,c#,.net,task-parallel-library,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 taskt1=新任务(()=>1); t1.继续使用(r=>1+r.Result)。继续使用(r=>1+r.Result); t1.Start(); Cons

我有以下示例代码:

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
taskt1=新任务(()=>1);
t1.继续使用(r=>1+r.Result)。继续使用(r=>1+r.Result);
t1.Start();
Console.Write(t1.Result)//1.
它显然会从
t1
任务返回
结果。(这是1)

但是如何从最后一个继续的任务(应该是
3
{1+1+1})中获得
结果呢。您可以对该任务执行与“原始”任务相同的任何操作(或多或少-例如,您不能手动
开始
继续),包括等待其完成和检查其结果

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
var t1=新任务(()=>1);
变量t2=t1。继续(r=>1+r.Result)
.继续(r=>1+r.Result);
t1.Start();
Console.Write(t1.Result)//1.
控制台。写入(t2。结果)//3.

为什么我把continueWith放在哪里很重要?我不知道你的意思。你能澄清一下吗?在这种情况下,TPL是“一致的”,因为任务的延续也是一个任务。我知道continuewith返回一个任务。问:我认为这很简单:t1只指第一个任务。稍后,此任务将与其他任务一起添加,但我无法从外部访问它们。但是在你的回答中,t2确实指的是最后一个继续的任务,所以你可以得到这个值。对吗?你想问一个任务所有的延续,然后递归地问它们的延续等等,直到找到“最后一个”延续?不。我想你已经回答了我的问题。我认为这都是参考资料的问题。myne仅引用原始任务,而您的引用则引用上一个继续的任务。这就是全部。(请确认)。PS任务是否有任何属性告诉我它的继续任务?谢谢你的帮助:-)