Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > SWT и Thread


Автор: crazylammer 25.4.2007, 12:06
Здравствуйте!

Есть такой код:

Код


        button.addListener( SWT.Selection,  new Listener() {
            public void handleEvent(Event e) {
                Thread thread = new Thread(
                    new Runnable() {
                        public void run() {
                            doSomething();
                            System.out.println("Thread finished!");
                            wListManager.redraw(start);
                        }
                    }
                );
                thread.start();
            }
        });


doSomething() не обращается к визуальным объектам, а wListManager.redraw() - перерисовывает List на форме.  doSomething() выполняется нормально, а при попытке wListManager.redraw(start); бросается ексепшн:

Exception in thread "Thread-0" org.eclipse.swt.SWTException: Invalid thread access
    at org.eclipse.swt.SWT.error(SWT.java:3374)
    at org.eclipse.swt.SWT.error(SWT.java:3297)
    at org.eclipse.swt.SWT.error(SWT.java:3268)
    at org.eclipse.swt.widgets.Widget.error(Widget.java:435)
    at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:331)
    at org.eclipse.swt.widgets.List.removeAll(List.java:907)
    at form.ListManager.redraw(ListManager.java:17)
    at form.DicForm$21$1.run(DicForm.java:511)
    at java.lang.Thread.run(Unknown Source)


Как это можно исправить? Заранее спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)