我正在编写一个封装第三方Web服务调用的库,并试图使库使用新的异步/等待功能。以下示例中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方法,该方法是否应该添加异步和等待关键字?或者是因为它返回一个任务是好的吗?这种嵌套有更好的模式吗?
我认为DoSomethingAsync方法是正确的方法去这里,是否正确?我相信DoSomethingElseAsync在建立图书馆时似乎是错误的方法。
C#5.0不存在,下一个版本是4.5,你碰巧意味着什么? – 2012-08-02 15:13:34
@Ramhound - 下一个CLR是4.5,下一个语言_is_ C#5 – 2012-08-02 15:19:45