Это мой первый вопрос о StackOverflow (извините за мой английский). Я постараюсь объяснить проблему, а я могу.Вопрос SWT с syncExec()
У меня есть приложение 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)
принимает разные времена (от 0 мс до XXXXms)
Я прочитал эту
syncExec (Runnable работоспособный) CAUS текущий поток (если он отличается от потока пользовательского интерфейса на дисплее), чтобы дождаться завершения runnable.
Но Runnable постоянного время ...
Может кто-то наставит меня? Я не понимаю, почему иногда занимает 3 минуты и в другое время.
Благодаря
+1, добро пожаловать в StackOverflow! Я переформатировал ваш код для вас, но вам не нужно извиняться за ваш английский :) –
Спасибо вам. Я знаю, что это сидит долгое время назад, но я был очень рад принять участие сегодня, наконец. – Michel