Ho letto molto circa async/await
, ma ho ancora qualche carenza nella comprensione della seguente situazione.Lottare con asincrona/attendere C#
La mia domanda è, devo applicare i miei metodi "wrapper" come in DoSomething()
o come in DoSomethingAsync()
.
Quindi, cosa c'è di meglio (e perché): utilizzo lo await
in metodi wrapper o restituisco direttamente l'attività?
public static async void Main()
{
await DoSomething();
await DoSomethingAsync();
}
private static Task DoSomething()
{
return MyLibrary.DoSomethingAsync();
}
private static async Task DoSomethingAsync()
{
await MyLibrary.DoSomethingAsync().ConfigureAwait(false);
}
public class MyLibrary
{
public static async Task DoSomethingAsync()
{
// Here is some I/O
}
}
Cercare di evitare l'uso di 'asincrona main' - vedi http://stackoverflow.com/questions/9208921/async- on-main-method-of-console-app per maggiori informazioni. – rhughes
Questa risposta può esserti utile: http://stackoverflow.com/questions/22808475/how-to-force-execution-to-stop-till-asynchronous-function-is-fully-executed – user3340627
Vedi [Qualsiasi differenza tra "Aspetta Task.Run(); return; "e" return Task.Run() "?] (http://stackoverflow.com/q/21033150/1768303). – Noseratio