2011-07-26 10 views
5

This msdn article se titula "Cómo llamar a un método de Visual C# de forma asincrónica".¿Es una mejor práctica llamar a los métodos de forma asincrónica utilizando delegados?

El artículo dice "Las llamadas asincrónicas se realizan mediante el uso de delegados" a lo que respondo en mi cabeza "no necesariamente, esa es solo una forma de hacerlo".

El tono práctico de la declaración de los artículos me hace preguntarme: ¿es una buena práctica, o la EM lo considera una buena práctica, utilizar delegados al hacer llamadas asíncronas?

Respuesta

5

Hasta la versión actual de .NET, los métodos asíncronos se han manejado típicamente en hilos de fondo separados del que los desencadena, por lo que ha sido esencial hacerlo con un delegado que puede invocar en otro hilo.

Sin embargo, con el C# Async CTP reciente (que probablemente estará en C# 5.0 u otra versión futura), la historia ha cambiado un poco - no es esencial usar delegados, puede escribir código en un estilo imperativo tradicional, y el compilador hará la mayor parte del trabajo por usted. Esto podría involucrar delegados, pero no necesariamente, el compilador hace algunos trucos ingeniosos y escribe una máquina de estados finitos que se puede usar para ejecutar código de forma asincrónica.

+0

+1 No sabía acerca de CTP en 5.0 –

1

Sí, los delegados son el camino a call methods asynchronously. No es una buena práctica, así es como se hace. En .NET, debe usar un delegado.

0

Alguien me puede decir que estoy equivocado por favor, pero he tenido la impresión en el momento de la compilación de que un delegado es tan bueno como un método, con el propósito de que un delegado sea una definición de firma. No puedo pensar en otra forma de ejecutar código asíncrono sin un método, incluso si es anónimo, que se convierte en un método en tiempo de compilación.

Cuestiones relacionadas