これは StackOverflow に関する私の最初の質問です (英語で申し訳ありません)。私はできる限り問題を説明しようとします。
私は、アプリケーションの期間を知らせるプログレスバーを持っている前景の翡翠アプリケーションを備えたswtアプリケーションを持っています。この進行状況バーを更新するには、次を使用します。
if(Display.getCurrent() != null) {
progress.run();
}
else {
sShell.getDisplay().syncExec(progress);
}
進行状況は次のとおりです。
Runnable progress = new Runnable() {
public void run () {
if (progressBar.isDisposed ())
return;
int percentage= (numStep*100)/maxSteps;
progressBar.setSelection(percentage);
if (numStep >= maxSteps){
label1.setText("The simulation has been completed.");
button.setEnabled(true);
}
}
};
このRunnableにかかる時間を分析しようとすると一定ですが、この行を分析するsSehll.getDisplay().syncExec(progress)
と異なる時間(0msからXXXXmsまで)がかかります
私はこれを読みました
syncExec(Runnable runnable) は、現在のスレッド (ディスプレイのユーザー インターフェイス スレッドとは異なる場合) が runnable の終了を待機するようにします。
しかし、ランナブルは時定数です...
誰かが私を案内できますか?なぜ時々3分かかるのか、それ以外の時間がかかるのか理解できません。
ありがとう