1. ホーム
  2. c#

[解決済み] 非同期メソッドにおけるAwaitとTask.Resultの比較 [重複]。

2023-07-08 12:09:03

質問

以下のようにすると、何が違うのでしょうか。

async Task<T> method(){
    var r = await dynamodb.GetItemAsync(...)
    return r.Item;
}

async Task<T> method(){
    var task = dynamodb.GetItemAsync(...)
    return task.Result.Item;
}

私の場合、なぜか2つ目だけが動作します。1番目は決して終わらないようです。

どのように解決するのですか?

await はタスクの結果を非同期にアンラップしますが、Resultを使うだけではタスクが完了するまでブロックされます。

Jon Skeetによるこの説明を参照してください。