Лучший способ обновления пользовательского интерфейса в плагине SWT eclipse - PullRequest
0 голосов
/ 06 марта 2020

Я разрабатываю плагин для своих собственных проектов (Eclipse Foundation, используя SWT), но столкнулся со следующей проблемой. Плагин выполняет большую работу, когда начинается выполнение, поэтому может потребоваться 2 или 3 минуты для завершения sh всей операции. Я решил реализовать окно журнала, чтобы я мог проверить прогресс и любую ошибку, которая может произойти. Таким образом, пока он выполняет свою работу, окно / фрейм заполняется всей информацией, когда вся операция завершена. Естественно, я подумал, что, поскольку он использует один поток, чтобы сделать все, событие «refre sh interface» запускается, когда поток завершает операцию.

Есть ли правильный или «правильный» способ решения этой проблемы? Я привык к разработке веб-приложений, и у меня очень мало знаний о SWT в целом. У меня есть идея использовать разные потоки для обработки разных операций, синхронизируя их, когда это необходимо, но я не совсем уверен, сработает ли это или есть ли лучший подход в границах автономных приложений.

Спасибо за любой совет или подсказку!

1 Ответ

0 голосов
/ 07 марта 2020

Итак, в конце я последовал совету и сгенерировал пользовательское задание, в котором используется операция Display.getDefault (). AsyncExe c (). Небольшой пример, как это сработало:

Job synJob = Job.create("Synchronize Files", (ICoreRunnable) monitor -> {

for(String filePath : paths) {
    //my operation that sync some files in workspace in a loop ...
    //...
    //now log some data, updating the UI
    Display.getDefault().asyncExec(() -> {
    //generates a text and appends it to a frame etc.
    Label label = new Label(myFrame, 0);
    //etc
    });
 }

  });

  synJob.schedule();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...