Как запустить пользовательское событие в SWT? - PullRequest
0 голосов
/ 03 апреля 2012

Я создаю приложение в SWT, у меня также работает поток, который опрашивает базу данных на предмет любых изменений (внесенных непосредственно в БД или другим приложением).

Я могу забрать изменения, но теперь мне нужно сообщить моему интерфейсу для обновления, я попытался вызвать метод обновления объектов (который я сделал) прямо из потока, но я получил SWTException "Invalid Thread Access".

Есть ли способ создать мое собственное событие внутри потока, которое затем может быть запущено вручную при обнаружении изменения в базе данных, которое затем выбирается классом, который необходимо обновить.

Я смотрел на события SWT, но мне кажется, что я могу найти только те, которые прикреплены к виджетам и могут быть запущены только через сам виджет ...

Спасибо!

1 Ответ

2 голосов
/ 03 апреля 2012

Вам необходимо обновить пользовательский интерфейс из потока пользовательского интерфейса.

Один из способов сделать это - использовать один из этих методов в классе org.eclipse.swt.widgets.Display:

Display.getDefault().syncExec( new Runnable() { ... } );

или:

Display.getDefault().asyncExec( new Runnable() { ... } );
...