0

次の配列が与えられ、Func<int>[] funcsTPL (Task Parallel Library .NET) を使用すると、.NET の関数の呼び出しによって返される最初の結果をどのように評価できますかfuncs

ここでの主な制約は、すべてのメソッドを並行して実行し、最初のメソッドが返されたときに停止することです。

メソッド定義は次のようなものです。

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

1 に答える 1

3

そのため、まず各関数を に変換する必要がありTaskます。それはSelectと で完了Task.Runです。次に、それTask.WaitAnyを取得したら、最初のタスクの結果を取得するために使用できます。

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

残りのタスクはまだ終了することに注意してください。私たちは彼らを止めているのではなく、彼らの結果を無視しているだけです。

于 2013-01-15T21:37:50.107 に答える