gpt4 book ai didi

c# - 并行任务,在使用 ContinueWith 时,第一个操作的结果未找到

转载 作者:太空宇宙 更新时间:2023-11-03 21:39:16 24 4
gpt4 key购买 nike

我是 TPL 的新手,所以只是通过一些关于相同的教程, http://msdn.microsoft.com/en-us/library/dd537609(v=vs.110).aspx

在上面的链接中,我正在尝试使用此代码



 var displayData = Task.Factory.StartNew(() => {
随机 rnd = new Random();
int[] 值 = 新的 int[100];
对于 (int ctr = 0; ctr <= values.GetUpperBound(0); ctr++)
值[ctr] = rnd.Next();

返回值;
}).
继续((x)=> {
int n = x.Result.Length;
长和= 0;
双重意思;

对于 (int ctr = 0; ctr <= x.Result.GetUpperBound(0); ctr++)
sum += x.Result[ctr];

平均值=总和/(双)n;
返回 Tuple.Create(n, sum, mean);
}).
继续((x)=> {
return String.Format("N={0:N0}, Total = {1:N0}, Mean = {2:N2}",
x.Result.Item1, x.Result.Item2,
x.Result.Item3);
});

我正在用我的代码替换上面的代码



 var taskList = Task.Factory.StartNew(() => {
var newRandom = new Random();
var intArray = new int[100];
Console.WriteLine("第一次迭代开始");
Parallel.For(0, intArray.GetUpperBound(0) - 1, i =>
{
intArray[i] = newRandom.Next();
控制台.WriteLine(i);
});
Console.WriteLine("第一次迭代结束");

}).ContinueWith((x) => {
Console.WriteLine("第二次迭代开始");
int n = x.Result.Length;
长和= 0;
双重意思;

对于 (int ctr = 0; ctr <= x.Result.GetUpperBound(0); ctr++)
sum += x.Result[ctr];

均值 = 总和/(double)n;
Console.WriteLine("第二次迭代结束");
返回 Tuple.Create(n, sum, mean);
});

我收到错误::

'System.Threading.Tasks.Task' does not contain a definition for 'Result' and no extension method 'Result' accepting a first argument of type 'System.Threading.Tasks.Task' could be found (are you missing a using directive or an assembly reference?) 

它没有找到“结果”

我做错了什么??

最佳答案

Task类没有 Result属性(property),Task<T>做。

问题是,您在 StartNew 中的代表不返回值,因此它返回一个 Task而不是 Task<T> .

尝试添加这个:

...
Console.WriteLine("End of First Iteration");
return intArray;

关于c# - 并行任务,在使用 ContinueWith 时,第一个操作的结果未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20188502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com