2017-04-06 12 views
2

以下は、.NET CoreクラスライブラリのAzureテーブルストレージ(ATS)からデータを読み取るために使用するメソッドです。Azureテーブルストレージへの非同期呼び出し

このメソッドは、ATSへの非同期呼び出しを行っていますが、私はawaitできません。このメソッドを "標準" 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を使用するエラーが発生します。

+0

マークあなたは –

+0

')タスク GetAsync (非同期だから、'公共:)非同期のようにあなたの方法。それはそれを同期方法にするでしょう。 – Sam

+0

なし、ではないのawaitなし「待つ」ことなく、意味 –

答えて

3

このメソッドを「標準」非同期メソッドにするにはどうすればよいですか?

awaitResultへのすべての呼び出しを置き換えます

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

コンパイラはそこからあなたを案内します。

関連する問題