我正在编写一个包装第三方 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 关键字?还是因为它返回一个任务就可以了?这种嵌套有更好的模式吗?
我认为 DoSomethingAsync 方法是正确的方法,对吗?我相信 DoSomethingElseAsync 在构建库时似乎是错误的方法。