長いforループ操作中にUIがハングアップしたように見えないようにするにはCpkの計算に含めるプロセス、温度、および電圧をユーザーが選択できるUIを作成しました。スクリプトは、プロセス、温度、および電圧の各組み合わせを反復処理します。操作中にUIがハングアップすることに気づきました。これを回避する方法はありますか?vb6以上のDoEventsに似た関数、バックグラウンドプロセスワーカーと思いますか?
スクリプティングRe:ループ操作が長い間、UIがハングアップしたように見えないようにする方法あずきっく 、
質問を別の方向から攻撃します。スクリプトが効率的でない可能性があります。実行に数時間かかり、1〜2分で実行されるように書き換えられたスクリプトを見たことがあります。詳細がなければ、それを評価することは困難です。
vb6を知っている場合、ユーザー入力を取得し、スクリプトでJSLスクリプトを生成して作業を行うことができますが、DoEventsを使用するVB6経由で実行できます。 その機能を知りませんし、VBのエキスパートでもありません。
JMPドキュメントの「オートメーションリファレンス」では、VBに公開されているJMPライブラリ関数の多くを紹介しています。
JMPセッションを作成して表示するには、次のコードをVBに追加します
脚本。
JMP.ApplicationとしてDim MyJMP
JMP.DocumentとしてJMPDocを暗くする
MyJMP = CreateObject( "JMP.Application")を設定します
MyJMP.Visible = True
JMPライブラリー関数、Run JSL、
JSLを実行するファイル
それのいずれかが役立つかどうかはわかりません。
Re:ループ操作が長い間、UIがハングアップしたように見えないようにする方法JSLでループしている場合は、caption()への呼び出しを追加して、ユーザーに進捗状況を通知できます。
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:ループ操作が長い間、UIがハングアップしたように見えないようにする方法時間のかかる多数の個別のタスクを実行している場合は、このステータスウィジェットを使用できます。
アクティビティステータスクラス
ユーザーの進行状況を表示し、画面を強制的に更新します。
Re:ループ操作が長い間、UIがハングアップしたように見えないようにする方法私のコードは1分以内に実行されます。私の懸念は、プロセス中にGUI(JSLで作成)が応答を停止したように見えることです。これは、スクリプトとGUIの両方が同じスレッドで実行されているためだと思います(私は間違っている可能性があります)。VB6では、forループ内にDoEventsコマンドを追加することで簡単に解決でき、UIで要素を更新して応答性を高めることができますが、全体の操作に時間がかかります。
スクリプトをJMP自体に統合してアドインにして、他のユーザーがインストールして再利用できるようにしたいのですが。VB6パスを使用する場合は、VB6で完全に実行するのではなく、VB6を使用してJSLスクリプトを生成してから実行します。さまざまなアプローチを提供していただき、ありがとうございます。:)
Re:ループ操作が長い間、UIがハングアップしたように見えないようにする方法待つ必要があるようです!
見てみます @David 次の提案。
ありがとう!Re:ループ操作が長い間、UIがハングアップしたように見えないようにする方法またはコードを次のように変更しますプログレスバーあなたのニーズを満たすために。あずきっくのステータスクラスも見栄えがします。