In quali scenari si vorrebbe usare
public async Task AsyncMethod(int num)
invece di
public async void AsyncMethod(int num)
L'unico scenario a cui riesco a pensare è se hai bisogno dell'attività per poterne monitorare i progressi.
Inoltre, nel seguente metodo, le parole chiave asincrone e in attesa sono inutili?
public static async void AsyncMethod2(int num)
{
await Task.Factory.StartNew(() => Thread.Sleep(num));
}
Thread.Sleep
con i tuoi compiti che dovresti await Task.Delay(num)
invece
Task.Delay
non è dato Task.AsyncDelay
che tutti i metodi in questione sono Async
async void
invece dichiarato async Task
. Il metodo si è arrestato in modo anomalo perché utilizzava un oggetto di contesto Entity Framework dichiarato come membro del controller è stato eliminato prima che il metodo terminasse l'esecuzione. Il framework disponeva il controller prima che il suo metodo finisse di essere eseguito. Ho cambiato il metodo in Task asincrono e ha funzionato.
Foo()
diventerebbeFooAsync()
.