async
en c# asynchronous programación: tarea
o void
? cuando se programa asíncronamente usando C#, el método async
puede devolver tarea
o void
. Esta elección es crucial porque determina el comportamiento del método y cómo interactúa con el código de llamadas.
tarea
Por lo general, cuando desee exponer el progreso o el resultado de una operación asincrónica a la persona que llama, debe devolver tarea
. Esto le permite a la persona que llama esperar la tarea y continuar la ejecución después de que se complete. La tarea de regreso
también puede usar manejo de excepciones y modos asíncronos, como async-Foreach
, donde se puede monitorear el progreso de múltiples tareas.
void
El único caso adecuado para devolver void
del método async
es cuando necesita explícitamente el tipo de retorno , como en un controlador de eventos o devolución de llamada UI. En estos casos, la persona que llama no debe poder esperar el método, y no son necesarias las palabras clave async
y a espera
.
Evite el nivel superior
métodos marcados tienen semántica especial y deben usarse con precaución. Representan operaciones asincrónicas de nivel superior y tienen diferentes reglas de manejo de excepciones que los métodos que devuelven tareas. Las excepciones en el método de nivel superior void
se tratan como excepciones no controladas y pueden conducir a un comportamiento inesperado.
Por ejemplo, considere el siguiente código:
public static async void asyncmethod2 (int num) { espera tarea.factory.startNew (() => thread.sleep (num)); }
public static async void AsyncMethod2(int num)
{
await Task.Factory.StartNew(() => Thread.Sleep(num));
}
async void es innecesario y puede ser problemático porque:
y el a espera
para garantizar el manejo correcto de las excepciones y mantener la capacidad de rastrear y administrar operaciones asíncronas.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3