¿Cuál es la diferencia entre un delegado asíncrono y el método asincrónico?¿Cuál es la diferencia entre un delegado asincrónico y el método asincrónico?
Alguien me dijo que eran diferentes en C#, pero pensé que eran lo mismo.
¿Cuál es la diferencia entre un delegado asíncrono y el método asincrónico?¿Cuál es la diferencia entre un delegado asincrónico y el método asincrónico?
Alguien me dijo que eran diferentes en C#, pero pensé que eran lo mismo.
Primero los delegados. Cuando se declara una, el compilador genera automáticamente tres métodos para el tipo de delegado:
el Invoke() método llama al delegado de destino de forma sincrónica, al igual que una llamada normal. El método BeginInvoke() es la llamada asincrónica, el método de destino se ejecuta en un subproceso de grupo de subprocesos. La llamada a EndInvoke() es necesaria después de que el método se complete para liberar los recursos asignados para la llamada y volver a generar cualquier excepción que podría haber abortado la llamada.
El .NET framework contiene muchas clases que tienen un método BeginXxxx(). MSDN Library se refiere a ellos como operaciones asincrónicas, no como métodos asincrónicos. Comienzan una operación que se completa de forma asíncrona.
Comenzando con .NET 4.5 y soportado por la versión 5 de C#, las operaciones asíncronas cuyo nombre finaliza en Async y devuelve una Tarea se pueden llamar en una expresión aguarda. Cuando se utiliza en un método que tiene el modificador async. Esto simplifica enormemente el manejo de operaciones asincrónicas, importantes en WinRT donde muchas operaciones comunes son asincrónicas.
Esto ya no es cierto en C# 5 (Visual Studio Dev11 Preview) C# tiene soporte adecuado para los métodos "asincrónicos". –
Para las diferencias, así como algunas discusiones adicionales, vea Asynchronous methods and asynchronous delegates aquí en SO.
posible duplicación de [Métodos asíncronos y delegados asíncronos] (http://stackoverflow.com/questions/1418392/synchronous-methods-and-asynchronous-delegates) – Oliver