Я пишу библиотеку, которая оборачивает вызов стороннего веб-сервиса, и пытаюсь заставить библиотеку использовать новые функции 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 кажется неправильным подходом при создании библиотеки.