В документации MSDN указано, что async
и await
подходят для задач с привязкой к IO, тогда как Task.Run
следует использовать для задач, связанных с ЦП.
Я работаю над приложением, которое выполняет HTTP-запросы для извлечения HTML-документов, которые затем анализирует. У меня есть метод, который выглядит так:
public async Task<HtmlDocument> 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
, или я его использую?