次の配列が与えられ、Func<int>[] funcs
TPL (Task Parallel Library .NET) を使用すると、.NET の関数の呼び出しによって返される最初の結果をどのように評価できますかfuncs
。
ここでの主な制約は、すべてのメソッドを並行して実行し、最初のメソッドが返されたときに停止することです。
メソッド定義は次のようなものです。
public static int EvalFirstResult(Func<int>[] funcs);
次の配列が与えられ、Func<int>[] funcs
TPL (Task Parallel Library .NET) を使用すると、.NET の関数の呼び出しによって返される最初の結果をどのように評価できますかfuncs
。
ここでの主な制約は、すべてのメソッドを並行して実行し、最初のメソッドが返されたときに停止することです。
メソッド定義は次のようなものです。
public static int EvalFirstResult(Func<int>[] funcs);
そのため、まず各関数を に変換する必要がありTask
ます。それはSelect
と で完了Task.Run
です。次に、それTask.WaitAny
を取得したら、最初のタスクの結果を取得するために使用できます。
var tasks = funcs.Select(function => Task.Run(function)).ToArray();
int result = Task.WaitAny(tasks);
残りのタスクはまだ終了することに注意してください。私たちは彼らを止めているのではなく、彼らの結果を無視しているだけです。