Ho un async
metodo che non restituisce dati:
public async Task MyAsyncMethod()
{
// do some stuff async, don't return any data
}
Lo chiamo da un altro metodo che restituisce alcuni dati:
public string GetStringData()
{
MyAsyncMethod(); // this generates a warning and swallows exceptions
return "hello world";
}
Chiamare MyAsyncMethod()
senza attendere provoca un avviso " Poiché questa chiamata non è attesa, il metodo corrente continua a essere eseguito prima del completamento della chiamata " in Visual Studio. Nella pagina relativa a quell'avviso è indicato:
È consigliabile sopprimere l'avviso solo se si è certi di non voler attendere il completamento della chiamata asincrona e che il metodo chiamato non genererà eccezioni .
Sono sicuro di non voler attendere il completamento della chiamata; Non ho bisogno o non ho tempo di farlo. Ma la chiamata potrebbe sollevare eccezioni.
Mi sono imbattuto in questo problema alcune volte e sono sicuro che sia un problema comune che deve avere una soluzione comune.
Come posso chiamare in modo sicuro un metodo asincrono senza attendere il risultato?
Aggiornare:
Per le persone che mi suggeriscono di attendere il risultato, questo è il codice che risponde a una richiesta Web sul nostro servizio Web (API Web ASP.NET). In attesa in un contesto UI, il thread dell'interfaccia utente rimane libero, ma in attesa in una chiamata di richiesta Web attenderà il completamento dell'attività prima di rispondere alla richiesta, aumentando così i tempi di risposta senza motivo.
MyAsyncMethod().Wait()