"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Async/espera en C#: ¿Cuándo devolver la tarea frente a la nula?

Async/espera en C#: ¿Cuándo devolver la tarea frente a la nula?

Publicado el 2025-03-23
Navegar:668

Async/Await in C#: When to Return Task vs. Void?

Valor de retorno de 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.

cuando return 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.

cuando return 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

async void

método métodos marcados

async void

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:

evita que la persona que llama espera el método y monitoree su progreso.
    Las excepciones en el método
  1. no se manejarán y pueden hacer que la aplicación se comporte de manera anormal.
  2. Es mejor usar el método
async tarea

y el a espera para garantizar el manejo correcto de las excepciones y mantener la capacidad de rastrear y administrar operaciones asíncronas.

Último tutorial Más>

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