L'imbrication async/await méthodes

Je suis en train d'écrire une bibliothèque qui encapsule un tiers appel de service web et suis en train de faire de la bibliothèque d'utiliser le nouveau async/await fonctionnalités. Qu'est-ce que la bonne utilisation de l'async/await mots-clés dans l'exemple suivant?

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);        
    }
}

Pour permettre à mon interlocuteur d'attendre la DoSomethingAsync méthode, cette méthode ont également la async et await mots-clés ajouté à cela? Ou est-il beau que-c'est parce qu'il renvoie à une Tâche? Est-il un meilleur modèle pour ce genre de nidification?

Je pense que le DoSomethingAsync méthode est la bonne façon d'aller ici, est-ce correct? Je crois DoSomethingElseAsync semble pas la bonne approche lors de la construction d'une bibliothèque.

C# 5.0 n'existe pas, la prochaine version 4.5, ne vous arrive de dire que?
La prochaine CLR est de 4,5, le lendemain de la langue est C#5

OriginalL'auteur Brian Vallelunga | 2012-08-02