Bug oder Feature??Kurze Frage für diejenigen unter Ihnen, die es vielleicht wissen: Wenn Sie eine < äußerst Es ist üblich, dass Benutzer JMP auf diese Weise beenden und so praktisch immer alle <
Hat das jemand gesehen bzw. sind ihm Workarounds bekannt?
Das Hauptproblem, auf das ich stoße, besteht darin, dass JMP ein Python-Skript mit Ereignisschleife startet und die ausführbare Datei an ein Fenster anhängt. Anschließend kommuniziere ich über Localhost-Sockets mit Python.Das Fensterschließskript beendet die Python-Sitzung ordnungsgemäß und dergleichen.Wenn JMP auf die oben beschriebene Weise geschlossen wird, geschieht dies nicht und JMP friert dann ein, aber die JMP-Fenster sind alle verschwunden – JMP bleibt also mit seinem vollständigen Satz an Ressourcen (oft mehr als 1 GB) in der Task-Manager-Liste und wird dies auch tun kann nur durch manuelles Beenden der Aufgabe beendet werden.
Da das RunProgram-Ergebnis an ein aktives JMP-Fenster gebunden sein muss (für Ereignisschleifenzwecke, nehme ich an) und da das Fenster auf die oben beschriebene Weise zwangsweise geschlossen wird, wird die RunProgram-Variable zerstört, bevor ich es ordnungsgemäß herunterfahren kann Python.
Es ist ein Durcheinander und ich wünschte, es gäbe eine Lösung, aber bis jetzt sehe ich es nicht.
Automatisierung und SkripterstellungWindowsBetreff: Bug oder Feature??Ich habe dies im FileSnapper-Add-In verwendet, um ähnliche Probleme zu lösen. RunProgram ist nicht wirklich an ein Fenster gebunden, sondern an den Kontext des Fensters, der geklont werden kann. Solange ein Klon oder das Fenster auf den Kontext verweist, wird es nicht zerstört und die RunProgram-Skripte funktionieren weiterhin. Die Variable namespace:evalcontext wird nie verwendet, außer um den Kontext am Leben zu halten. Die RunProgram-Variable/das RunProgram-Handle (möglicherweise rp) wird ebenfalls im selben Namespace gehalten, da sie dieselbe Lebensdauer benötigt.
// 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>
Nichts davon ist dokumentiert oder verspricht, dass es in Zukunft funktionieren wird, aber es wird wahrscheinlich eine hilfreiche Nachricht auslösen, wenn sich etwas ändert.
@jschroedl - ^Q- und OnClose-Skripte
Betreff: Bug oder Feature??Danke dafür!Ich werde es mir jetzt ansehen und sehen, ob es funktioniert, aber man versäumt es nie, diese wunderbaren Juwelen zu verschenken, also bin ich mir sicher, dass es bei mir funktionieren wird!Das wird großartig sein, um das Fensterproblem zu umgehen!
Betreff: Bug oder Feature??@KennethAdams Gern geschehen! FileSnapper ( FileSnapper ) oder die Technik, den Kontext zu erfassen? Beide Rückmeldungen sind gut für das JMP-Entwicklerteam.
@julianisch - Filesnapper hilft möglicherweise bei der Wiederherstellung von JSL, an dem ich arbeite, und der Kontext-Grabber ist nützlich, wenn Add-Ins geschrieben werden, die beim Start (und möglicherweise anderswo) gestartet werden. Beide Ideen könnten besser sein, wenn sie besser in JMP integriert wären.
Betreff: Bug oder Feature??Vielen Dank für den Hinweis hier @Craige_Hales
Ich habe ein Problem eingereicht, um das ^Q + OnClose-Verhalten zu untersuchen und zu sehen, ob wir die Dinge in Zukunft verbessern können.
Betreff: Bug oder Feature??Beachten Sie, dass ich das Problem nur gesehen habe, wenn ^Q das folgende Popup-Fenster (mehrere nicht gespeicherte Dateien) verursacht und der Benutzer auf „Keine speichern“ klickt.

Betreff: Bug oder Feature??Ich habe gerade die Implementierung einer dauerhaften Python-Verbindung mit Ihrem Trick zum Entfernen des Fensters abgeschlossen – ich kann jetzt das Python-Sitzungsbeendigungsskript in die Datei AddinUnload.jsl einfügen und es funktioniert (JMP friert nicht ein, wenn kein Fenster geöffnet ist, sodass ein versteckte Sitzung, die nur über den TaskManager beendet werden kann)
Vielen Dank für deine Hilfe!Mit der neuen dauerhaften Python-Verbindung kann ich alle meine Datenabfragen auf Python verlagern und parallel ausführen, dann holt JMP die Dateien ab, wenn sie für den Benutzer zur Nutzung bereit sind. Das ist großartig!
Betreff: Bug oder Feature??Vielen Dank, Sie haben mir den Tag gerettet. Wenn Sie auf ein Problem stoßen, wenn Benutzer mehrere bearbeitete Dateien mit der Option „Keine speichern“ schließen. Wenn jemand Hilfe beim Schreiben seines Aufsatzes benötigt und nach dem besten Online-Aufsatzschreiber sucht, sollte er vorbeischauen Das https://writinguniverse.com/essay-types/informative-essays/ Seite. Auf dieser Website können sie verschiedene Websites und deren Rezensionen vergleichen, um eine fundierte Entscheidung für ihr Aufsatzprojekt zu treffen. Einfacher ausgedrückt hilft diese Website Menschen dabei, den richtigen Online-Aufsatzschreibdienst zu finden, indem sie Rezensionen und Optionen für ihre Aufsatzprojekte bereitstellt.
Betreff: Bug oder Feature??@jschroedl Gab es diesbezüglich ein Update?Ich bemerke das gleiche Problem auch, wenn ein Benutzer mehrere Fenster aus der Fensterliste auswählt und sie alle auf einmal schließt (normalerweise durch Drücken der Entf-Taste, nachdem er sie ausgewählt hat) und wenn ein Popup über mehrere nicht gespeicherte Dateien angezeigt wird, wird „Keine speichern“ ohne geschlossen Auslösen von OnClose – genau das Gleiche wie oben, außer dass JMP nicht beendet wird.
Dadurch können viele Ressourcen ungenutzt bleiben, da die Bereinigungsskripte nie ausgeführt werden.