すべてのクラスが実装されていると仮定しますIGenerator
List<IGenerator> generators = new List<IGenerator> { new Jane1Generator(), new Jane2Generator(), new JohnGenerator() };
と
public interface IGenerator
{
string GetFirstName();
Task<List<Items>> Generate();
}
したがって、グループ化generators
すると、 andが同じカテゴリにGetFirstName()
配置されます。とのタスクを単一のタスクに結合し、別々に保つにはどうすればよいですか。両方のジェーンの結果を 1 つのリストに結合したいと考えています。Jane1
Jane2
Jane1
Jane2
John
foreach (var groupedByName in generators.GroupBy(i => i.GetFirstName()))
{
//Combine Tasks of Jane1 & Jane2
//give me a new Task that's is the sum of Jane1 & Jane2 tasks.
//almost like List<Items>.Join(AnotherList) wrapped with a Task, so I can wait for both Tasks and Get combined Results instead.
}
そのため、リストを作成する場合、2 つの要素のみを含めるList<Task<List<Items>>> tasks = new List<Task<List<Items>>>();
必要があります。tasks
1 つは Jane1 と Jane2 の結合タスクで、もう 1 つは John だけです。
await Task.WhenAll(tasks);
Console.Write("Done");