我还没有遇到过对文档的查询超过1“set”的情况。我想知道,如果不是
会发生什么while (queryable.HasMoreResults)
{
foreach(Book b in await queryable.ExecuteNextAsync<Book>())
{
// Iterate through books
}
}
我用
ConcurrentBag<IPost> result = new ConcurrentBag<IPost>();
List<Task> tasks = new List<Task>();
var outQ = query.AsDocumentQuery<IPost>();
while (outQ.HasMoreResults)
{
var parcialResult = outQ.ExecuteNextAsync<IPost>().ContinueWith((t) =>
{
foreach (var item in t.Result)
{
result.Add(item);
}
});
tasks.Add(parcialResult);
}
return Task.WhenAll(tasks).ContinueWith((r) => { return result.AsEnumerable(); });
我的印象是,一旦部分查询同时执行,第二种方法,即并行方法会产生更多性能......但我担心while (outQ.HasMoreResults)
不会变错直到所有异步操作都完成...
答案 0 :(得分:0)
您对HasMoreResults
没有足够快速更新的担忧是有根据的。您无法调度异步操作并假设该对象将立即转换到异步操作的 end 所期望的状态。在这种特殊情况下,您别无选择,只能等待以完成异步操作。
我认为图书馆作者故意选择了不适合并行化的API - 很可能是因为它封装了需要连续完成的工作。