对 Azure Table 存储的异步调用

Async call to Azure Table Storage

以下是我在我的 .NET Core class 库中从 Azure Table 存储 (ATS) 读取数据的方法。

问题是虽然此方法正在对 ATS 进行异步调用,但我不能 await 它。如何修改此方法,使其成为 "standard" async 方法?

public T Get<T>(string partitionKey, string rowKey, string tableName) where T : ITableEntity, new()
{
    var table = GetTable(tableName);

    TableQuery<T> query = new TableQuery<T>().Where(
        TableQuery.CombineFilters(
           TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey),
           TableOperators.And,
           TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, rowKey))).Take(1);

    var result = new T();

    TableContinuationToken continuationToken = null;
    do
    {
       Task<TableQuerySegment<T>> querySegment = table.ExecuteQuerySegmentedAsync(query, continuationToken);
       TableQuerySegment<T> segment = querySegment.Result;
       result = segment.FirstOrDefault();
       continuationToken = segment.ContinuationToken;
     } while (continuationToken != null);

     return result;
}

如果我简单地添加 async Task<T>await 关键字,我会在使用 await.

的地方出错

How do I modify this method so that I can make it a "standard" async method?

将对 Result 的所有调用替换为 await:

Task<TableQuerySegment<T>> querySegment = table.ExecuteQuerySegmentedAsync(query, continuationToken);
TableQuerySegment<T> segment = await querySegment;

编译器将从那里指导您。