Comment puis-je empêcher l'interface utilisateur de ressembler à raccrocher tout en faisant longtemps pour le fonctionnement en boucleJ'ai fait une interface utilisateur qui permet à l'utilisateur de choisir le processus, la température et la tension à inclure dans le calcul de Cpk, le script itérera sur chaque combinaison de processus, de température et de tension. J'ai remarqué que l'interface utilisateur raccroche pendant son fonctionnement. Y a-t-il un moyen d'éviter cela? Je pense qu'une fonction similaire à DoEvents en vb6 ou mieux, un travailleur de processus d'arrière-plan?
ScriptingRe: Comment puis-je empêcher l'interface utilisateur de ressembler à raccrocher tout en faisant longtemps pour une opération en boucle @TheRealYeti ,
Je vais attaquer votre question dans une autre direction, votre script pourrait être inefficace. J'ai vu des scripts qui prenaient des heures à s'exécuter, réécrits pour s'exécuter en une minute ou deux. Sans plus de détails, il est difficile d'évaluer cela.
Étant donné que vous connaissez vb6, vous pouvez obtenir l'entrée utilisateur et votre script peut générer un script JSL pour effectuer le travail, mais l'exécuter via VB6 qui utilise DoEvents. Je ne connais pas cette fonction et je ne suis pas un expert VB.
La documentation JMP "Automation Reference" vous indique de nombreuses fonctions de la bibliothèque JMP exposées à VB.
Pour créer une session JMP et la rendre visible, ajoutez le code suivant à votre VB
scénario.
Dim MyJMP As JMP.Application
Dim JMPDoc As JMP.Document
Définissez MyJMP = CreateObject ("JMP.Application")
MyJMP.Visible = True
La fonction de bibliothèque JMP, Run JSL,
Exécutez JSL fichier
Je ne sais pas si tout cela aide.
Re: Comment puis-je empêcher l'interface utilisateur de ressembler à raccrocher tout en faisant longtemps pour une opération en boucleSi vous bouclez dans JSL, vous pouvez ajouter des appels à caption () pour informer l'utilisateur de la progression.
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);Re: Comment puis-je empêcher l'interface utilisateur de ressembler à raccrocher tout en faisant longtemps pour une opération en boucleSi vous effectuez un certain nombre de tâches discrètes chronophages, vous pouvez utiliser ce widget d'état:
Classe de statut d'activité
Il donnera à l'utilisateur l'état d'avancement et forcera les mises à jour de l'écran.
Re: Comment puis-je empêcher l'interface utilisateur de ressembler à raccrocher tout en faisant longtemps pour une opération en boucleMon code s'exécute en moins d'une minute. Ma préoccupation est que pendant le processus, l'interface graphique (réalisée en JSL) semble ne plus répondre. Je pense que c'est parce que le script et l'interface graphique fonctionnent tous les deux dans le même thread (je peux me tromper). Dans VB6, l'ajout de la commande DoEvents à l'intérieur de la boucle for peut être une solution rapide, il permet à l'interface utilisateur de mettre à jour ses éléments et d'apparaître réactif, mais l'opération totale prendrait plus de temps.
J'aimerais que le script soit intégré dans JMP lui-même et en fasse un complément pour que les autres utilisateurs puissent simplement l'installer et le réutiliser. Si je descends le chemin VB6, je préfère le faire complètement en VB6, vs générer un script JSL en utilisant VB6 puis l'exécuter. Merci d'avoir donné une approche différente. J'apprécie chaque commentaire.:)
Re: Comment puis-je empêcher l'interface utilisateur de ressembler à raccrocher tout en faisant longtemps pour une opération en boucleOn dirait que l'attente est ce dont j'ai besoin!
Je vais jeter un oeil à @David est la suggestion suivante.
Merci!Re: Comment puis-je empêcher l'interface utilisateur de ressembler à raccrocher tout en faisant longtemps pour une opération en boucleou modifier le code comme Barre de progression pour répondre à vos besoins. @David_Burnham La classe de statut a l'air bien aussi!