Подходит ли async / await для методов, связанных как с IO, так и с CPU?
В документации MSDN говорится, чтоasync
а такжеawait
подходят для задач, связанных с IO, тогда какTask.Run
следует использовать для задач, связанных с процессором.
Я работаю над приложением, которое выполняет HTTP-запросы для получения документов HTML, которые затем анализирует. У меня есть метод, который выглядит так:
public async Task LoadPage(Uri address)
{
using (var httpResponse = await new HttpClient().GetAsync(address)) //IO-bound
using (var responseContent = httpResponse.Content)
using (var contentStream = await responseContent.ReadAsStreamAsync())
return await Task.Run(() => LoadHtmlDocument(contentStream)); //CPU-bound
}
Это хорошее и подходящее использованиеasync
а такжеawait
или я переусердствовал?