Я пишу библиотеку, которая обертывает вызов сторонней веб-службы и пытаюсь заставить библиотеку использовать новые функции async/await. Каково правильное использование ключевых слов async/wait в следующем примере?
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 и ожидания? Или это нормально, потому что оно возвращает задачу? Есть ли лучший шаблон для такого рода вложенности?
Я думаю, что метод DoSomethingAsync - правильный способ пойти сюда, правильно ли? Я считаю, что DoSomethingElseAsync кажется неправильным подходом при создании библиотеки.