Estoy escribiendo una biblioteca en C#, pero necesito que sea asincrónica. Normalmente expones un conjunto de funciones de DLL, y toman parámetros de entrada, y devuelven un valor cuando terminan. Pero, ¿cómo puedo hacer que una función de biblioteca (que se puede llamar desde C++/Delphi/Etc) que ya comienza a reproducir de vuelta la salida mientras se toma la entrada?API asíncrona para transmitir datos desde un dispositivo de hardware
La única solución que veo ahora es comunicar usando sockets/pipes/etc, en lugar de llamadas a DLL.
¿Alguien tiene un ejemplo de cómo hacer esto con las llamadas a DLL normales?
que realmente depende de lo que está haciendo ... incluso podría intercambiar punteros a funciones a las que su DLL llama cuando necesita el siguiente fragmento de entrada ... podría usar memoria compartida más un mutex global para intercambiar datos hacia adelante y hacia atrás, etc. Para obtener una respuesta útil, realmente necesita dar más detalles ... – Yahia
Aquí hay varias opciones diferentes: en parte, depende del tipo de salida que tenga y de las entradas. Cuando escucho "asincrónico", tiendo a pensar en llamadas asincrónicas de un solo disparo, "Aquí hay alguna entrada, dame algo de salida cuando estés listo", pero esto parece que quieres una solución de transmisión de tipo más o menos. Más contexto sería útil. –
Una opción es hacer que sus funciones tomen un parámetro de devolución de llamada al que puede llamar para procesar fragmentos de los datos de salida. Sin embargo, puede que no sea la API más conveniente. Una forma más natural sería devolver algún tipo de objeto iterador, pero eso haría que la implementación de su biblioteca sea más complicada, dependiendo de dónde provenga su entrada. – millimoose