Tengo un async
método que no devuelve datos:
public async Task MyAsyncMethod()
{
// do some stuff async, don't return any data
}
Llamo a esto desde otro método que devuelve algunos datos:
public string GetStringData()
{
MyAsyncMethod(); // this generates a warning and swallows exceptions
return "hello world";
}
Llamar MyAsyncMethod()
sin esperar provoca una advertencia " Debido a que esta llamada no se espera, el método actual continúa ejecutándose antes de que se complete la llamada " en Visual Studio. En la página de esa advertencia dice:
Debería considerar suprimir la advertencia solo si está seguro de que no desea esperar a que se complete la llamada asincrónica y que el método llamado no generará ninguna excepción .
Estoy seguro de que no quiero esperar a que se complete la llamada; No necesito ni tengo tiempo para hacerlo. Pero la llamada podría generar excepciones.
Me he topado con este problema varias veces y estoy seguro de que es un problema común que debe tener una solución común.
¿Cómo llamo con seguridad a un método asíncrono sin esperar el resultado?
Actualizar:
Para las personas que sugieren que solo espero el resultado, este es un código que responde a una solicitud web de nuestro servicio web (API web ASP.NET). La espera en un contexto de IU mantiene el subproceso de IU libre, pero en una llamada de solicitud web esperará a que finalice la tarea antes de responder a la solicitud, aumentando así los tiempos de respuesta sin motivo.
MyAsyncMethod().Wait()