O / async / wait é adequado para métodos que estão vinculados a E / S e à CPU?
A documentação do MSDN parece indicar queasync
eawait
são adequados para tarefas ligadas a IO, enquantoTask.Run
deve ser usado para tarefas ligadas à CPU.
Eu estou trabalhando em um aplicativo que executa solicitações HTTP para recuperar documentos HTML, que analisa então. Eu tenho um método que se parece com isso:
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
}
Este uso é bom e adequado deasync
eawait
ou estou usando demais?