attendent AsyncMethod() rapport attendent des attendent des Tâches.Usine.StartNew<TResult>(AsyncMethod)

Compte tenu de la méthode suivante:

public async Task<MyObject> DoSomethingAsync() {
    //do some work
    await OpenSomeFileAsync();
    return new MyObject();
}

Est-il une différence entre:

public async void SomeEventHandler(EventArgs args) {
    var myObject = await await Task.Factory.StartNew<Task<MyObject>>( DoSomethingAsync);
    //do something with myObject
}

et:

public async void SomeEventHandler(EventArgs args) {
    var myObject = await DoSomethingAsync();
    //do something with myObject
}

Je pensais que le "travail" de DoSomethingAsync arriverait-il immédiatement dans une nouvelle tâche dans le premier cas, mais pour être honnête, je n'ai pas vraiment de bien comprendre comment les Tâches, async et await sont travail, et je suis assez sûr que je suis juste de compliquer à l'excès des choses pour moi-même.

EDIT:

Cette question est venue de regarder ce Métro exemple:
http://code.msdn.microsoft.com/windowsapps/Sharing-Content-Target-App-e2689782

Spécifiquement en de la page d'accueil.xaml.cs, ils ont cette:

var unused = Task.Factory.StartNew(async () => { //some work... });
//unused is of type Task<TResult>

J'ai essayé de retravailler sans l'aide d'un anonyme en fonction async et j'ai commencé à me demander, pourquoi ne pas simplement écrire une méthode async et await, au lieu d'appeler StartNew et de la remise en fonction async?

Pourquoi voudriez-vous pour l'écrire de cette façon? Le point de l'ensemble de l'aide de la nouvelle async/await mots-clés de sorte que vous n'avez pas à.
Ressemble à un mauvais exemple morceau de code de la main gauche
J'ai juste pris un coup d'oeil moi-même, et... Wow. Ouais, c' "Officielle de Windows SDK de l'Échantillon" le code est vraiment mauvais! Je pense qu'ils ont réussi à complètement à côté du point de async!

OriginalL'auteur Justin Lang | 2012-07-17