Ошибка неверного доступа потока в SWT - PullRequest
2 голосов
/ 05 января 2011

Не могли бы вы сообщить мне причину этой ошибки в SWT "org.eclipse.swt.SWTException" Неверный доступ к потоку?И как исправить такие ошибки.

Ответы [ 2 ]

4 голосов
/ 05 января 2011

Это происходит, когда вы пытаетесь воздействовать на элемент интерфейса из потока, который не является потоком пользовательского интерфейса.

Чтобы запустить код в потоке пользовательского интерфейса, вы должны использовать Runnable и попросить поток отображения запуститьЭто.Таким образом:

Display.getDefault().syncExec( new Runnable() {
    @Override
    public void run() {
        // Do your job here
    }
} );

Как указано в методе syncExec javadoc,

поток, вызывающий этот метод, приостанавливается до завершения работоспособного.

Также вы можете проверитьметод asyncExec.

2 голосов
/ 05 января 2011

В SWT вы можете получить доступ к ресурсам GUI только из потока отображения. Например, при настройке текста в элементе управления org.eclipse.swt.widgets.Text вы уже должны быть в ветке дисплея или вызвать


        final Text text = ...;
        Display.getCurrent().syncExec(new Runnable() {
            @Override
            public void run() {
                text.setText("test");
            }
        });

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