0

给定以下数组Func<int>[] funcs并使用 TPL(任务并行库 .NET),我如何评估调用funcs.

这里的主要约束是并行运行所有方法并在第一个返回时停止。

方法定义是这样的:

public static int EvalFirstResult(Func<int>[] funcs);
4

1 回答 1

3

所以,首先我们需要把每个函数变成一个Task. 这是用Selectand完成的Task.Run。然后,一旦我们有了它,我们就可以使用Task.WaitAny来获得第一个任务的结果来完成。

var tasks = funcs.Select(function => Task.Run(function)).ToArray();
int result = Task.WaitAny(tasks);

请注意,其余任务仍将完成;我们没有阻止他们,我们只是忽略了他们的结果。

于 2013-01-15T21:37:50.107 回答