이것은 ToDo 샘플 프로젝트 Cosmos DB ToDo App을 기반으로 개발중인 클래스 라이브러리에 있으며 CosmosDB에서 "CRUD"작업을 수행합니다. 그러나이 메서드를 호출 할 때마다 앱이 갑자기 멈추고 오류가 발생하지 않습니다.Azure CosmosDB SDK ExecuteNextAsync <T> 오류
다음은 내가 읽기를 수행하는 데 사용하는 코드입니다. 현재 주석 처리되지 않은 코드는 데이터베이스에서 읽는 데 문제가없는 동기식 호출입니다.
public static async Task<IEnumerable<T>> GetItemsAsync<T, E>(Expression<Func<T, bool>> predicate) where T : DocDbEntity<E> where E : class
{
string documentType = typeof(E).Name;
IQueryable<T> query = _client.CreateDocumentQuery<T>(
UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId))
.Where(predicate)
.Where(x => x.DocumentType == documentType);
List<T> results = new List<T>();
foreach (var res in query)
{
results.Add(res);
}
//IDocumentQuery<T> query = _client.CreateDocumentQuery<T>(
// UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId))
// .Where(predicate)
// .Where(x => x.DocumentType == documentType)
// .AsDocumentQuery();
//while (query.HasMoreResults)
//{
// results.AddRange(await query.ExecuteNextAsync<T>());
//}
return results;
}
나는 즉시 오류를 제공하거나 문제를 일으키는 원인이 될 수 없으며 검색된 데이터 요청에 "응답"무슨 가리키는없이 종료됩니다 query.ExecuteNextAsync<T>()
내 응용 프로그램을 사용하려고 할 때마다. 샘플 앱에 문제가없는 것 같습니다.
나는 버전이 문제의 원인이 무엇 1.19.1
@ NuGet에서 Microsoft.Azure.DocumentDB 패키지를 사용하고 있습니다?
이 이유는'async void' 함수가'await'를 사용할 수 있기 때문이며, 첫 번째'await'까지 동 기적으로 실행되고 즉시 (대리자 핸들러와 함께) 반환됩니다. 이것은 당신이'await'을 가지고있다하더라도, 당신의 델리게이트 처리기가 사라졌고, 첫 번째'await' 후에 그 메소드로 돌아갈 수있는 능력도 있다는 것을 의미합니다. – ethane