Cosmos DB async wait 默默退出

问题描述 投票:0回答:1

以下代码执行时,默默退出:

        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();

预期的响应,但程序却默默退出。我什至无法尝试/捕获任何错误。

c# async-await azure-cosmosdb
1个回答
0
投票

通常这意味着调用

ByAsync
的人(或调用者的调用者,基本上堆栈上的任何人)都没有使用
await

© www.soinside.com 2019 - 2024. All rights reserved.