Я хочу выполнить запрос в фоновом режиме в своем приложении RAP Eclipse, но без блокировки пользовательского интерфейса. Я после этого руководства: http://eclipse.org/rap/developers-guide/devguide.php?topic=threads.html&version=2.2Выполнение фонового действия в приложении RAP Eclipse
Но без успеха:/
Запрос выполняется, но она всегда блокирует пользовательский интерфейс при вызове. Вот код, который я использую:
final ServerPushSession pushSession = new ServerPushSession();
Runnable bgRunnable = new Runnable() {
public void run() {
// schedule the UI update
display.syncExec(new Runnable() {
public void run() {
try {
//CODE
try {
Thread.sleep(5000);
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
catch (PartInitException e) {
e.printStackTrace();
System.exit(0);
}
setText("updated");
}
});
// close push session when finished
pushSession.stop();
}
};
pushSession.start();
Thread bgThread = new Thread(bgRunnable);
bgThread.setDaemon(true);
bgThread.start();
Есть ли у кого-нибудь идеи о том, что происходит?
Ugh .. от того, что я знаю, приложения RAP запускают все в одном потоке пользовательского интерфейса, так как оно находится внутри браузера. Было бы неплохо увидеть фактический ответ на этот вопрос. – GGrec
Я не тестировал ваш код, но, поскольку вы принудительно выполняете синхронизацию, ожидая 5 секунд на bgThread, я склонен сказать, что поток пользовательского интерфейса также вынужден ждать. Поскольку синхронизация заставляет целевой поток не возвращаться ни к чему другому, если только последняя синхронизация * не заполнена, в противном случае состояние сохранения не может быть гарантировано. Поэтому, в свою очередь, попробуйте display.asyncExec – dkeck
@dkeck спасибо за ваш ответ! Я пробовал оба без успеха уже ... – rsy