这是我在 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 分钟和其他一些时间。
谢谢