我有两种方法连接到两个不同的Foo
s 源,它们返回两个 s IAsyncEnumerable<Foo>
。我需要Foo
从两个来源获取所有 s 才能处理它们。
问题:我想同时(异步)查询两个源,即。不等Source1
枚举完成才开始枚举Source2
。据我了解,这就是SequentialSourcesQuery
下面的方法示例中发生的情况,对吗?
对于常规任务,我会启动第一个任务,然后是第二个任务,然后调用await Task.WhenAll
. 但是我对如何处理有点困惑IAsyncEnumerable
。
public class FoosAsync
{
public async IAsyncEnumerable<Foo> Source1() { }
public async IAsyncEnumerable<Foo> Source2() { }
public async Task<List<Foo>> SequentialSourcesQuery()
{
List<Foo> foos = new List<Foo>();
await foreach (Foo foo1 in Source1())
{
foos.Add(foo1);
}
await foreach (Foo foo2 in Source2())
{ //doesn't start until Source1 completed the enumeration?
foos.Add(foo2);
}
return foos;
}
}