Se ho un metodo normale che voglio fare asincrona:Perché utilizzare async e attendere con l'attività <>?
public int Foo(){}
lo farei:
public Task<int> FooAsync(){
return Task.Run(() => Foo());
}
Perché dovrei fare:
public async Task<int> FooAsync(){
return await Task.Run(() => Foo());
}
Il modo ho intenzione di utilizzare questo è:
FooAsync().ContinueWith((res) => {});
Voglio che il metodo sia eseguito senza fermarsi, ma voglio che venga attivato un callback, quindi lo ContinueWith
. Ma con la seconda versione, c'è un punto per usarlo?
descrizione eccellente! – paulsm4
Grazie, @ paulsm4. Devo dire che sto solo raccontando quello che ho sentito di recente, penso, è dal http://hanselminutes.com/327/everything-net-programmers-know-about-asynchronous-programming-is-wrong, ma non sicuro al 100%. Non avevo ancora molta esperienza con la funzione asincrona, quindi potrei sbagliarmi e sarei felice di saperne di più, forse async offre alcuni vantaggi in questo caso. –
Inoltre, potresti voler leggere [Devo esporre i wrapper asincroni per i metodi sincroni?] (Http://blogs.msdn.com/b/pfxteam/archive/2012/03/24/10287244.aspx) (La risposta quasi sempre è "no;" se si dispone di un metodo sincrono, quindi dargli una firma del metodo sincrono). –