Est async/await adapté pour les méthodes qui sont à la fois des OI et en CPU?

La documentation MSDN apparaît, en l'état async et await sont adaptés pour IO-tâches limitées alors que Task.Run doit être utilisé pour le CPU des tâches.

Je travaille sur une application qui effectue les requêtes HTTP pour récupérer des documents HTML, dont il analyse ensuite. J'ai une méthode qui ressemble à ceci:

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
}

Est-ce une bonne et convient à une utilisation de async et await, ou suis-je sur-de les utiliser?

InformationsquelleAutor Sam | 2013-02-15