SWT проблема однопоточности - PullRequest
3 голосов
/ 04 марта 2010

Я впервые столкнулся с проблемой при использовании многопоточности. В программе SWT в основном потоке я создал графический интерфейс и открыл оболочку, а затем новый поток запустил некоторую логику в модели, и вмодель в определенном состоянии есть метод вызывается в классе GUI ... и вот это проблема, этот метод вызывается во 2-м потоке, в то время как я хочу, чтобы он вызывался в основном потоке или, по крайней мере, выполнить его восновной поток

Как я могу решить эту проблему?Спасибо,

Ответы [ 2 ]

3 голосов
/ 04 марта 2010

Вам необходимо использовать методы asyncExec или syncExec в классе Display, чтобы выполнить исполняемый файл в основном потоке:

// do stuff in a background thread

// ...then schedule job to run in main thread
display.asyncExec(new Runnable() {
   ...
});

И syncExec, и asyncExec планируют работу в главном потоке (UI) как можно скорее. Разница в том, что asyncExec возвращается немедленно, а syncExec не вернется, пока работа не будет завершена.

3 голосов
/ 04 марта 2010

Внешние потоки не могут получить доступ к GUI. Чек display.asyncExec.

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