Tengo un problema para entender que el método BeginInvoke() llama a un delegado cuando llama de manera asincrónica a los métodos, después de completar sus tareas por qué no puede BeginInvoke() devolver el valor de retorno del método, por qué necesitamos EndInvoke() para consultar BeginInvoke() y devolver el valor de retorno de la misma. Sé que esto puede no ser una buena pregunta, pero mi confusión es :-) verdadera¿por qué necesitamos que EndInvoke() devuelva el valor de la llamada asincrónica en delegado?
Adición: puedo llamar a un método de forma asíncrona mediante DelagateName.BeginInvoke (parámetros), ahora cuando el método coincidente en el delegado (supongamos que devuelve un valor) termina su trabajo y devuelve un valor, ¿por qué necesito DelegateName.EndInvoke() para obtener el valor devuelto? ¿Por qué la primera llamada no puede devolver el valor en la finalización del método?
Gracias Jon, eso realmente soluciona mi consulta :-), creo que en el lenguaje de los profanos BeginInvoke se hace al recibir una llamada y devuelve el control con la promesa de que se ocupará del trabajo, por lo que ya no puede devolver el trabajo , por lo tanto, se enviará EndInvoke() para hacer ese trabajo más tarde ... (¡Creo que estoy pensando!) – mohits00691
@ mohits00691: No del todo como lo expresaría, pero creo que tienes la idea correcta :) –
Gracias Jon, me ayudó mucho a despejar esta duda, supongo que con el tiempo seguiré buceando más y más, muchas gracias a todos. – mohits00691