Eclipse RCP: Display.getDefault (). AsyncExec по-прежнему блокирует мой графический интерфейс - PullRequest
2 голосов
/ 21 октября 2011

У меня есть простой viewPart, предлагающий несколько текстовых полей для ввода параметров для теста на селен.После заполнения этих полей пользователь может начать тест, который ок.нужно 30-45 минут, чтобы бежать.Я хочу, чтобы мой графический интерфейс был активным во время этого теста, чтобы пользователи могли заниматься другими делами.Мне нужен монитор прогресса.

Я попытался поставить тест на селен в задании, содержащем Display.getDefault (). AsyncExec, чтобы запустить его.Но мой графический интерфейс зависает через несколько секунд, давая индикатор занятости.Селен не обновляет никакой другой вид, кроме монитора прогресса.

Есть ли другой способ гарантировать, что задание не будет блокировать мой графический интерфейс?

Best, Mirco

Ответы [ 2 ]

7 голосов
/ 21 октября 2011

Все, что выполняется в (a)syncExec, использует поток отображения и, следовательно, блокирует ваш пользовательский интерфейс до его возврата. Я предлагаю вам использовать Eclipse Jobs . При этом будет использоваться индикатор прогресса, который рабочее место уже предлагает из коробки.

0 голосов
/ 10 февраля 2014

Я бы предложил разделить ваш код на код, который обновляет пользовательский интерфейс, и код, выполняющий другие операции.Выполните все это в отдельном потоке, и когда вам нужно получить или настроить какое-либо действие для пользовательского интерфейса, используйте «Display.getDefault (). AsyncExec».

...