Errores, fallos, preguntas - página 2540
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¿Qué quieres?
Para que los incompetentes como tú, Fedoseyev, etc. no se metan en la discusión de los bichos y diseños con sus comentarios.
Que las construcciones y mecanismos tomados en MQL de C++ en su totalidad y con el mismo aspecto que en C++ funcionan igual que en C++.
¿Para que MQL sea un análogo completo de C++?
Y deja de quejarte y de soltar mocos por ello. He abierto un hilo aparte para estas "discusiones".
Eres tú el que se queja de lo molesto que es, de un idioma distinto y de un hilo distinto.
Abre un hilo aparte para ti y tus simpatizantes y lloriquea allí.
¿Cómo hacer que el terminal libere el archivo mqd? O mejor aún, ¿si hubiera una forma interna de eliminarlo de la interfaz?
Puedo adivinar aproximadamente de qué trata la pregunta. Es mejor reafirmarlo.
Pero el while no tiene tiempo de salir del bucle a tiempo para ejecutar las funciones de abajo, después de que todos los otros procesos hayan terminado adicionalmente.
Y terminar la propia función Fn().
La función DestroyFunction(); actúa como un control en este ejemplo.
El contenido de la dll
El contenido del programa Servicio.
El retraso adicional por _StopFlag no ayuda.
Creo que hay un problema con la desinicialización de la dll en Servicios, ayúdame.
la dll no se descarga (necesariamente) inmediatamente después de la finalización del servicio (podría estar equivocado)
En cualquier caso, lo que se hace con DLL_PROCESS_DETACH es demasiado tarde. Haga una función explícita deinit en la dll que establezca esta bandera y la llame explícitamente cuando el servicio termine.
El terminal comenzará a descargar la lib después de que el hilo regrese de start(), creo. Si no, ¿cómo funciona? ¿El programa se está ejecutando y empieza a romper su entorno? Esto es una tontería. Inicie un hilo separado en la lib, no persiguiendo un hilo de script en un bucle, y podrá terminar normalmente.
El terminal comenzará a descargar la lib después de que el hilo regrese de start(), creo. Si no, ¿cómo funciona? ¿El programa se está ejecutando y empieza a romper su entorno? Esto es una tontería. Inicie un hilo separado en la lib, y podrá terminar normalmente.
El caso es que tengo el mismo problema con los hilos, y por ello no puedo terminar correctamente otros procesos (hilos), que tienen un montón de objetos que necesitan ser destruidos.
No puedo terminar otros procesos correctamente (es decir, no puedo matar otros procesos).
El Terminal funciona incorrectamente con el punto de salidaDLL_PROCESS_DETACH.
Probaré lo que sugirió TheXpert, pero el hecho de que el terminal descargue la dll inmediatamente, independientemente de DLL_PROCESS_DETACH, debe ser un error del terminal.
La dll no se descarga (necesariamente) inmediatamente después de la finalización del servicio (podría estar equivocado)
De todos modos, lo que estás haciendo con DLL_PROCESS_DETACH es demasiado tarde. Hacer una función explícita deinit en la dll, que establecerá esta bandera y llamará explícitamente al cierre del servicio.
Gracias por la pista, lo intentaré así.
El caso es que tengo el mismo problema con los hilos y por ello no puedo terminar correctamente otros procesos (hilos) que tienen un montón de objetos que necesitan ser destruidos.
No puedo terminar otros procesos correctamente (es decir, no puedo hacer nada con ellos).
El Terminal funciona incorrectamente con el punto de salida DLL_PROCESS_DETACH.
Probaré lo que sugirió TheXpert, pero el terminal descarga la dll de golpe, independientemente de DLL_PROCESS_DETACH, debe ser un error del terminal.
Gracias por el consejo, lo probaré así.
¿Qué te hace pensar que el dll vive en un hilo aparte? Tienes un fallo trivial del programa que no se maneja en condiciones de bucle.
Y DllMain se ejecuta al conectar/desconectar la dll al proceso DLL_PROCESS y al crear/terminar el hilo creado en este proceso DLL_THREAD. Así que su bool Detach, no es necesariamente existe dentro de la dll, porque el compilador puede haber eliminado en el marco de la optimización, ya que durante la ejecución de todas las funciones durante la vida de la dll no cambia y es igual a falso.
¿Qué te hace pensar que el dll vive en un hilo aparte? Tienes un fallo trivial del programa que no se maneja en condiciones de bucle.
Y DllMain se inicia cuando se conecta/desconecta la dll al proceso DLL_PROCESS y cuando se crea/desconecta un hilo, creado en este proceso DLL_THREAD. Así que su bool Detach, no es necesariamente existe dentro de la dll, porque el compilador puede haber eliminado en el marco de la optimización, ya que durante la ejecución de todas las funciones durante la vida de la dll no cambia y es igual a falso.
No se ha dicho en ningún sitio que el dll viva en un hilo aparte.
Nos comunicamos con Vict y nos entendemos )).
Entiendo que es un crash, no entiendo por qué no funciona el flag en DLL_PROCESS_DETACH para salir del bucle while.
En cuanto a DLL_THREAD, no están disponibles para mql en absoluto, está escrito en este artículo, lo he comprobado y realmente no funcionan.
Pero con el compilador VS como opción, podría ser un truco también.
Me gustaría escuchar las explicaciones de los representantes competentes en lugar de adivinar ))
Creo que hay un problema con la desinicialización de la dll en los Servicios, ayuda a entender.
Pero el while no tiene tiempo de salir del bucle a tiempo para ejecutar las funciones de abajo, después de que todos los otros procesos hayan terminado adicionalmente.
Y terminar la propia función Fn().
La función DestroyFunction(); actúa como un control en este ejemplo.
El contenido de la dll
El contenido del programa Servicio.
El retraso adicional por _StopFlag no ayuda.
¿De qué tipo de terminación normal estamos hablando?
Si necesita este comportamiento, entonces dentro de Fn en DLL debe ejecutar un hilo separado con bucle, que debe ser detenido por la bandera, que se establece en la función separada FnStop y en DLL_PROCESS_DETACH