Wie verhindere ich, dass die Benutzeroberfläche beim Ausführen einer langen For-Schleifenoperation so aussieht, als würde sie hängen bleiben?Ich habe eine Benutzeroberfläche erstellt, mit der der Benutzer auswählen kann, welcher Prozess, welche Temperatur und welche Spannung in die Berechnung von Cpk einbezogen werden sollen. Das Skript iteriert über jede Kombination aus Prozess, Temperatur und Spannung. Mir ist aufgefallen, dass die Benutzeroberfläche während des Betriebs hängen bleibt. Gibt es eine Möglichkeit, dies zu vermeiden? Ich denke, eine Funktion ähnlich wie DoEvents in vb6 oder besser, ein Hintergrundprozessarbeiter?
Qualitäts- und VerfahrenstechnikBetreff: Wie verhindere ich, dass die Benutzeroberfläche beim Ausführen einer langen For-Schleifenoperation so aussieht, als würde sie hängen bleiben?oder Code ändern wie Fortschrittsanzeige um Ihre Bedürfnisse zu erfüllen. @David_Burnham Die Statusklasse von sieht auch gut aus!
Betreff: Wie verhindere ich, dass die Benutzeroberfläche beim Ausführen einer langen For-Schleifenoperation so aussieht, als würde sie hängen bleiben?Es sieht so aus, als ob ich warten müsste!
Ich werde einen Blick darauf werfen @David 's Vorschlag als nächstes.
Danke!Betreff: Wie verhindere ich, dass die Benutzeroberfläche beim Ausführen einer langen For-Schleifenoperation so aussieht, als würde sie hängen bleiben?Mein Code läuft in weniger als einer Minute. Ich mache mir Sorgen, dass die GUI (in JSL erstellt) während des Vorgangs so aussehen würde, als würde sie nicht mehr reagieren. Ich denke, das liegt daran, dass das Skript und die GUI beide im selben Thread laufen (ich könnte mich irren). In VB6 kann das Hinzufügen des Befehls „DoEvents“ innerhalb der for-Schleife eine schnelle Lösung sein. Dadurch kann die Benutzeroberfläche ihre Elemente aktualisieren und reaktionsfähig erscheinen, aber der gesamte Vorgang würde länger dauern.
Ich möchte, dass das Skript in JMP selbst integriert wird und es zu einem Add-In wird, sodass andere Benutzer es einfach installieren und wiederverwenden können. Wenn ich den VB6-Pfad einschlage, mache ich es lieber komplett in VB6, anstatt ein JSL-Skript mit VB6 zu generieren und es dann auszuführen. Vielen Dank für Ihren anderen Ansatz. Ich freue mich über jedes Feedback. 

Betreff: Wie verhindere ich, dass die Benutzeroberfläche beim Ausführen einer langen For-Schleifenoperation so aussieht, als würde sie hängen bleiben?Wenn Sie mehrere zeitaufwändige Einzelaufgaben ausführen, können Sie dieses Status-Widget verwenden:
Aktivitätsstatusklasse
Es zeigt dem Benutzer den Fortschrittsstatus an und erzwingt Bildschirmaktualisierungen.
Betreff: Wie verhindere ich, dass die Benutzeroberfläche beim Ausführen einer langen For-Schleifenoperation so aussieht, als würde sie hängen bleiben?Wenn Sie eine JSL-Schleife ausführen, können Sie caption() Aufrufe hinzufügen, um den Benutzer über den Fortschritt zu informieren.
for (i = 1, i <= 1000000, i++,
a = i*2;
b = a^i;
if (mod(i, 1000) == 0,
caption("Processing ... " || char(i));
wait(0);
);
);
caption(remove);Betreff: Wie verhindere ich, dass die Benutzeroberfläche beim Ausführen einer langen For-Schleifenoperation so aussieht, als würde sie hängen bleiben?@TheRealYeti ,
Ich werde Ihre Frage aus einer anderen Richtung angreifen, Ihr Skript ist möglicherweise ineffizient. Ich habe Skripte gesehen, deren Ausführung Stunden gedauert hat und die so umgeschrieben wurden, dass sie in ein oder zwei Minuten ausgeführt werden konnten. Ohne weitere Details ist es schwierig, dies zu beurteilen.
Vorausgesetzt, Sie kennen vb6, könnten Sie die Benutzereingaben erhalten und Ihr Skript könnte ein JSL-Skript generieren, um die Arbeit zu erledigen, es aber über VB6 ausführen, das DoEvents verwendet.Ich kenne diese Funktion nicht und bin auch kein VB-Experte.
Die JMP-Dokumentation „Automation Reference“ weist Sie auf viele der JMP-Bibliotheksfunktionen hin, die für VB verfügbar sind.
Um eine JMP-Sitzung zu erstellen und sichtbar zu machen, fügen Sie den folgenden Code zu Ihrer VB hinzu
Skript.
Dimmen Sie MyJMP als JMP.Application
Dimmen Sie JMPDoc als JMP.Document
Setze MyJMP = CreateObject("JMP.Application")
MyJMP.Visible = True
Die JMP-Bibliotheksfunktion „Run JSL“
Führen Sie JSL aus Datei
Ich bin mir nicht sicher, ob irgendetwas davon hilft.