Bug ou fonctionnalité ??Question rapide pour ceux d'entre vous qui le savent peut-être -- si vous avez une méthode < extrêmement Il est courant que les utilisateurs quittent JMP de cette façon, contournant ainsi pratiquement toujours tous les scripts <
Quelqu'un a-t-il vu cela / est-il au courant de solutions de contournement ?
Le principal problème que je rencontre est que JMP lance un script Python en boucle d'événement et attache l'exécutable à une fenêtre, puis je communique avec Python via les sockets localhost.Le script de fermeture de fenêtre mettra fin à la session Python avec élégance, etc.Lorsque JMP est fermé de la manière ci-dessus, cela ne se produit pas et JMP se fige alors, mais les fenêtres JMP ont toutes disparu. JMP reste donc dans la liste du Gestionnaire des tâches avec son ensemble complet de ressources (souvent plus de 1 Go) et ne peut être tué qu'en terminant manuellement la tâche.
Étant donné que le résultat RunProgram doit être lié à une fenêtre JMP active (à des fins de boucle d'événements, je suppose), et que la fenêtre est fermée de force de la manière décrite ci-dessus, la variable RunProgram est détruite avant que je puisse l'arrêter correctement. Python.
C'est un gâchis pour lequel j'aurais aimé avoir une solution, mais pour l'instant je ne la vois pas.
Automatisation et scriptsles fenêtresRe : Bug ou fonctionnalité ??Je l'ai utilisé dans le complément FileSnapper pour traiter des problèmes similaires. RunProgram n'est pas réellement lié à une fenêtre, mais au contexte de la fenêtre, qui peut être cloné. Tant qu'un clone ou la fenêtre fait référence au contexte, il ne sera pas détruit et les scripts RunProgram fonctionneront toujours. La variable namespace:evalcontext n'est jamais utilisée, sauf pour maintenir le contexte en vie. La variable/handle RunProgram (rp peut-être) est également conservée dans le même espace de noms car elle a besoin de la même durée de vie.
// 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>
Rien de tout cela n’est documenté ou promis de fonctionner à l’avenir, mais cela enverra probablement un message utile si quelque chose change.
@jschroedl - Scripts ^Q et OnClose
Re : Bug ou fonctionnalité ??Merci pour ça!Je vais y jeter un œil maintenant et voir si cela fonctionne, mais vous ne manquez jamais de donner ces merveilleux joyaux, donc je suis sûr que cela fonctionnera pour moi !Ce sera génial pour contourner le problème de la fenêtre !
Re : Bug ou fonctionnalité ??@KennethAdams Vous êtes les bienvenus! FileSnapper ( FileSnapper ), ou la technique pour saisir le contexte ? Les deux commentaires sont bons pour l’équipe de développement JMP.
@julien - Filesnapper peut aider à récupérer le JSL sur lequel je travaille, et la capture de contexte est utile lors de l'écriture de compléments qui se lancent au démarrage (et peut-être ailleurs.) Les deux idées pourraient être meilleures si elles étaient davantage intégrées dans JMP.
Re : Bug ou fonctionnalité ??Merci pour l'avertissement ici @Craige_Hales
J'ai déposé un problème pour étudier le comportement ^Q + OnClose afin de voir si nous pouvons améliorer les choses à l'avenir.
Re : Bug ou fonctionnalité ??Notez que je n'ai vu le problème que lorsque ^Q provoque la fenêtre contextuelle ci-dessous (plusieurs fichiers non enregistrés) et que l'utilisateur clique sur "Enregistrer aucun".

Re : Bug ou fonctionnalité ??Je viens de terminer l'implémentation d'une connexion Python persistante en utilisant votre astuce pour supprimer la fenêtre. Je peux maintenant placer le script de fin de session Python dans le fichier AddinUnload.jsl et cela fonctionne (JMP ne se fige pas sans fenêtre ouverte, laissant un session cachée qui ne peut être supprimée que via TaskManager)
Merci beaucoup pour votre aide!Avec la nouvelle connexion Python persistante, je peux décharger toutes mes requêtes de données vers Python et les exécuter en parallèle, puis JMP récupérera les fichiers lorsqu'ils seront prêts à être consommés par l'utilisateur, c'est génial !
Re : Bug ou fonctionnalité ??Merci, vous m'avez sauvé la journée. Si vous rencontrez un problème lorsque les utilisateurs ferment plusieurs fichiers modifiés avec l'option « Enregistrer aucun ». Si quelqu'un a besoin d'aide pour rédiger son essai et recherche le meilleur rédacteur d'essais en ligne, il devrait visiter ce https://writinguniverse.com/essay-types/informative-essays/ page. Ce site Web leur permet de comparer différents sites Web et leurs critiques afin de faire un choix éclairé pour leur projet de dissertation. En termes plus simples, ce site Web aide les gens à trouver le bon service de rédaction de dissertations en ligne en leur proposant des critiques et des options pour leurs projets de dissertation.
Re : Bug ou fonctionnalité ??@jschroedl y a-t-il eu une mise à jour avec ça ?Je remarque également le même problème lorsqu'un utilisateur sélectionne plusieurs fenêtres dans la liste des fenêtres et les ferme toutes en même temps (généralement en appuyant sur Supprimer après les avoir sélectionnées) et s'il y a une fenêtre contextuelle concernant plusieurs fichiers non enregistrés, l'option Enregistrer aucun se fermera sans déclenchant OnClose - exactement la même chose que ci-dessus, sauf qu'ils ne quittent pas JMP.
Cela peut laisser de nombreuses ressources en suspens, car les scripts de nettoyage ne s'exécutent jamais.