¿Error o característica?Pregunta rápida para aquellos de ustedes que puedan saberlo: si tienen un método < extremadamente Es común que los usuarios salgan de JMP de esta manera, por lo que casi siempre omiten todos los scripts <
¿Alguien ha visto esto o conoce alguna solución alternativa?
El principal problema con el que me estoy encontrando es que hago que JMP inicie un script Python de bucle de eventos y adjunte el ejecutable a una ventana, luego me comunico con Python a través de sockets de host local.El script de cierre de ventana finalizará la sesión de Python correctamente y demás.Cuando JMP se cierra de la manera anterior, esto no sucede y luego JMP se congela, pero todas las ventanas de JMP desaparecen, por lo que JMP permanece en la lista del Administrador de tareas con su conjunto completo de recursos (a menudo más de 1 GB) y solo se puede eliminar finalizando manualmente la tarea.
Dado que el resultado de RunProgram debe estar vinculado a una ventana JMP activa (para fines de bucle de eventos, supongo), y dado que la ventana se cierra a la fuerza de la manera que describí anteriormente, la variable RunProgram se destruye antes de que pueda cerrar correctamente. Pitón.
Es un desastre y desearía que tuviera una solución, pero hasta el momento no la veo.
Automatización y secuencias de comandosventanasRe: ¿Error o característica?Utilicé esto en el complemento FileSnapper para solucionar problemas similares. RunProgram en realidad no está vinculado a una ventana, sino al contexto de la ventana, que se puede clonar. Mientras un clon o la ventana haga referencia al contexto, no se destruirá y los scripts de RunProgram seguirán funcionando. La variable namespace:evalcontext nunca se usa, excepto para mantener vivo el contexto. La variable/identificador RunProgram (quizás rp) también se mantiene en el mismo espacio de nombres porque necesita la misma vida útil.
// addinLoad.jsl - this is the round-about launcher that uses a clone of a transient
// window's evalcontextbox to keep the evalcontext for a callback script alive.
// ideally, this would be, or directly include, FileSnapper.jsl, but that file
// constructs a RunProgram callback script that is somehow tied to a transient
// evalcontext that won't be available at callback time.
Local( {bb},
New Window( "File Snapper Startup", bb = Button Box( "start", Include( "$ADDIN_HOME(com.jmp.hales.FileSnapper)\Additional.jsl" ) ) );
bb << click; // run the script in this window's context
// capture the evalcontext, by cloning the box that references it into our namespace
Namespace( "FileSnapper" ):evalcontext = ((bb << parent) << parent) << clonebox;
bb << closewindow;
if(Namespace( "FileSnapper" ):evalcontext<<CLASSNAME></CLASSNAME>
Nada de esto está documentado ni se promete que funcionará en el futuro, pero probablemente arrojará un mensaje útil si algo cambia.
@jschroedl - ^Secuencias de comandos Q y OnClose
Re: ¿Error o característica?¡Gracias por esto!Lo echaré un vistazo ahora y veré si funciona, pero nunca dejas de regalar estas maravillosas gemas, ¡así que estoy seguro de que funcionará para mí!¡Esto será fantástico para evitar el problema de la ventana!
Re: ¿Error o característica?@KennethAdams ¡De nada! FileSnapper ( FileSnapper ), o la técnica para captar el contexto? Cualquiera de los comentarios es bueno para el equipo de desarrollo de JMP.
@Julian - Filesnapper podría ayudar a recuperar JSL en el que estoy trabajando, y el capturador de contexto es útil al escribir complementos que se inician durante el inicio (y tal vez en otros lugares). Ambas ideas podrían ser mejores si estuvieran más integradas en JMP.
Re: ¿Error o característica?Gracias por el aviso aquí. @Craige_Hales
Presenté un problema para investigar el comportamiento ^Q + OnClose para ver si podemos mejorar las cosas en el futuro.
Re: ¿Error o característica?Tenga en cuenta que solo he visto el problema cuando ^Q provoca la siguiente ventana emergente (varios archivos no guardados) y el usuario hace clic en "No guardar ninguno".

Re: ¿Error o característica?Acabo de terminar de implementar una conexión Python persistente usando su truco para deshacerme de la ventana. Ahora puedo colocar el script de finalización de sesión de Python dentro del archivo AddinUnload.jsl y funciona (JMP no se congela sin ventanas abiertas, dejando un sesión oculta que solo se puede eliminar mediante TaskManager)
¡Muchas gracias por su ayuda!Con la nueva conexión persistente de Python puedo descargar todas mis consultas de datos a Python y ejecutarlas en paralelo, luego JMP recogerá los archivos cuando estén listos para que el usuario los consuma, ¡es genial!
Re: ¿Error o característica?Gracias, me salvaste el día. Si tienes algún problema cuando los usuarios cierran varios archivos editados con la opción "No guardar ninguno". Si alguien necesita ayuda con la redacción de su ensayo y está buscando al mejor redactor de ensayos en línea, debería visitar este https://writinguniverse.com/essay-types/informative-essays/ página. Este sitio web les permite comparar diferentes sitios web y sus reseñas para tomar una decisión informada para su proyecto de ensayo. En términos más simples, este sitio web ayuda a las personas a encontrar el servicio de redacción de ensayos en línea adecuado al brindarles reseñas y opciones para sus proyectos de ensayo.
Re: ¿Error o característica?@jschroedl ¿Ha habido una actualización con esto?También noto el mismo problema cuando un usuario selecciona varias ventanas de la Lista de ventanas y las cierra todas a la vez (generalmente presionando Eliminar después de seleccionarlas) y si aparece una ventana emergente sobre varios archivos no guardados, Guardar ninguno se cerrará sin activando OnClose, exactamente igual que el anterior, excepto que no salen de JMP.
Esto puede dejar muchos recursos pendientes ya que los scripts de limpieza nunca se ejecutan.