サード パーティの Web サービス呼び出しをラップするライブラリを作成しており、ライブラリで新しい async/await 機能を使用しようとしています。次の例の async/await キーワードの正しい使い方はどれですか?
public class MyApi
{
public Task<ApiResult> DoSomethingAsync()
{
return this.DoSomethingCore();
}
public async Task<ApiResult> DoSomethingElseAsync()
{
return await this.DoSomethingCore();
}
private async Task<ApiResult> DoSomethingCore()
{
var httpClient = new HttpClient();
var httpResponseMessage = await httpClient.GetAsync("some url");
var rawResultText = await httpResponseMessage.Content.ReadAsStringAsync();
return new ApiResult(rawResultText);
}
}
呼び出し元が DoSomethingAsync メソッドを待機できるようにするには、そのメソッドにも async キーワードと await キーワードを追加する必要がありますか? それとも Task を返すのでそのままでいいのでしょうか? この種の入れ子のより良いパターンはありますか?
DoSomethingAsync メソッドが正しい方法だと思いますが、正しいですか? ライブラリを構築するとき、 DoSomethingElseAsync は間違ったアプローチのように思えます。