以下代码执行时,默默退出:
public async Task<IList<T>> ByAsync<T>(Expression<Func<T, bool>> predicate = null) where T : class
{
var query = containerProvider.GetContainer<T>().GetItemLinqQueryable<T>();
var iterator = (predicate != null) ? query.Where(predicate).ToFeedIterator<T>() : query.ToFeedIterator<T>();
using (iterator)
{
var results = new List<T>();
while (iterator.HasMoreResults)
{
//ERROR: This never returns and the code silently exits.
var response = await iterator.ReadNextAsync();
results.AddRange(response);
}
return results;
}
}
如果我改变:
var response = await iterator.ReadNextAsync();
到
var response = iterator.ReadNextAsync().GetAwaiter().GetResult();
有用。显然这并不理想。更新插入时似乎也会发生这种情况。本质上,感觉 async 和 wait 被破坏了,我不知道是怎么破坏的。我在本地使用模拟器,也使用
.NET 客户端的 3.39.1 版本。不知道如何修复。有人遇到过类似的问题还是我在这里做错了什么?
尝试过:
var response = await iterator.ReadNextAsync();
预期的响应,但程序却默默退出。我什至无法尝试/捕获任何错误。
通常这意味着调用
ByAsync
的人(或调用者的调用者,基本上堆栈上的任何人)都没有使用 await
。