Come posso evitare che l'interfaccia utente appaia come se si bloccasse mentre facevo a lungo per il cicloHo creato un'interfaccia utente che consente all'utente di scegliere quale processo, temperatura e tensione includere nel calcolo di Cpk, lo script itererà su ogni combinazione di processo, temperatura e tensione. Ho notato che l'interfaccia utente si blocca mentre sta facendo il suo funzionamento. c'è un modo per evitarlo? Penso che una funzione simile a DoEvents in vb6 o superiore, un lavoratore in background?
ScriptingRi: Come posso impedire all'interfaccia utente di riattaccare mentre faccio a lungo per il ciclo @TheRealYeti ,
Attaccherò la tua domanda da un'altra direzione, la tua sceneggiatura potrebbe essere inefficiente. Ho visto degli script che richiedevano ore per essere eseguiti, riscritti per essere eseguiti in un minuto o due. Senza ulteriori dettagli, è difficile valutarlo.
Dato che conosci vb6, potresti ottenere l'input dell'utente e il tuo script potrebbe generare uno script JSL per fare il lavoro, ma eseguirlo tramite VB6 che utilizza DoEvents. Non conosco quella funzione né sono un esperto di VB.
La documentazione JMP "Riferimento di automazione" indica molte delle funzioni della libreria JMP esposte a VB.
Per creare una sessione JMP e renderla visibile, aggiungi il seguente codice al tuo VB
script.
Dim MyJMP As JMP.Application
Dim JMPDoc Come documento JMP
Imposta MyJMP = CreateObject ("JMP.Application")
MyJMP.Visible = True
La funzione di libreria JMP, Esegui JSL,
Esegui JSL file
Non sono sicuro se qualcuno di questi aiuti.
Ri: Come posso impedire all'interfaccia utente di riattaccare mentre faccio a lungo per il cicloSe esegui il looping in JSL puoi aggiungere chiamate a didascalia () per informare l'utente sullo stato di avanzamento.
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);Ri: Come posso impedire all'interfaccia utente di riattaccare mentre faccio a lungo per il cicloSe stai eseguendo una serie di attività discrete che richiedono tempo, puoi utilizzare questo widget di stato:
Classe di stato dell'attività
Fornirà all'utente lo stato di avanzamento e imporrà aggiornamenti della schermata.
Ri: Come posso impedire all'interfaccia utente di riattaccare mentre faccio a lungo per il cicloIl mio codice dura meno di un minuto. La mia preoccupazione è che durante il processo, la GUI (realizzata in JSL) sembrerebbe smettere di rispondere. Penso che questo sia perché lo script e la GUI sono entrambi eseguiti nello stesso thread (potrei sbagliarmi). In VB6, l'aggiunta del comando DoEvents all'interno del ciclo for può essere una soluzione rapida, consente all'interfaccia utente di aggiornare i suoi elementi e apparire reattivo, ma l'operazione totale richiederebbe più tempo.
Vorrei che lo script fosse integrato in JMP stesso e lo rendesse un componente aggiuntivo in modo che altri utenti possano installarlo e riutilizzarlo. Se percorro il percorso VB6, preferirei farlo completamente in VB6, rispetto alla generazione di script JSL utilizzando VB6, quindi eseguirlo. Grazie per aver dato un approccio diverso, apprezzo ogni feedback.:)
Ri: Come posso impedire all'interfaccia utente di riattaccare mentre faccio a lungo per il cicloSembra che aspettare sia quello di cui ho bisogno!
Darò un'occhiata @ David prossimo suggerimento.
Grazie!Ri: Come posso impedire all'interfaccia utente di riattaccare mentre faccio a lungo per il cicloo modifica il codice come Barra di avanzamento per soddisfare le tue esigenze. @David_Burnham Anche la classe di stato sembra bella!