Recientemente volví a C# de estar en el terreno de Objective-C, y las palabras clave async/await en C# 5 parecen divertidas. Pero todavía estoy tratando de manejar la sintaxis adecuada.¿Cuál es la firma del método para pasar un delegado asíncrono?
Quiero declarar un método que toma un delegado asíncrono como parámetro, pero estoy teniendo problemas para obtener la sintaxis de la persona que llama y la llamada correcta. ¿Puede alguien proporcionar una muestra de código que muestre la declaración del método, la llamada y una llamada al delegado?
Estoy pensando que la declaración sería algo como lo siguiente. Tenga en cuenta que esta función no es asincrónica; es decir, su asincronía es independiente del delegado.
void DoSomethingWithCallback(async delegate foo(int))
{
...
foo(42);
...
}
La llamada sería algo así como:
DoSomethingWithCallback(async (int x) => { this.SomeProperty = await SomeAsync(x); });
Por supuesto, nada de esto compila y la mayoría de las muestras que he visto asuma que tiene un campo de una o propiedad que es el delegado, en lugar de el delegado anónimo que me gustaría usar
tan cerca como puedo decir, no hay forma de especificar un delegado en línea, como lo hago en la pregunta anterior. Para usar un delegado como parámetro de método, un tipo de delegado debe declararse fuera del alcance de la clase. – AndrewS