Tengo una biblioteca de terceros que contiene una clase que realiza una función de forma asíncrona. La clase hereda del formulario. La función básicamente realiza un cálculo basado en datos almacenados en una base de datos. Una vez que ha finalizado, llama a un evento _Complete en el formulario de llamada.Cómo envolver un método asíncrono de forma síncrona en C#
Lo que me gustaría hacer es llamar a la función de forma sincrónica, pero desde una aplicación de formulario que no sea Windows. El problema es que, sin importar lo que haga, mis bloques de aplicaciones y el controlador de eventos _Complete nunca se activan. Desde un formulario de Windows, puedo simular la función ejecutando sincrónicamente usando un indicador "completo" y un "while (! Complete) application.doevents", pero obviamente application.doevents no está disponible en una aplicación de formulario que no sea Windows.
¿Hay algo que me impida usar el método de la clase fuera de una aplicación de formulario de Windows (debido a que hereda de 'Form')? ¿Hay alguna manera de solucionar este problema?
Gracias, Mike
No estoy seguro. ¿Tu código se ejecuta correctamente cuando se ejecuta de forma asíncrona en una aplicación que no es de Windows? ¿O siempre se bloquea indefinidamente en una aplicación que no es Windows? – Sam
En una aplicación que no es Windows, bloquea indefinidamente porque el evento _Complete nunca se dispara, a pesar de intentar ManualResetEvents, etc. En una aplicación de formulario de Windows, funciona bien. – mikecamimo