Please Enable JavaScript!
Gon[ Enable JavaScript ]

non-ui thread 에서 main-ui thread 사용시 에러

자바(JAVA)
반응형

일반스레드를 만들어서 run() 함수를 실행한다. 실행함수 중간에 main 화면을 제어하는
함수가 있다면 다음과 같은 에러가 날것이다.

Exception in thread "Thread-0" org.eclipse.swt.SWTException: Invalid thread access
  at org.eclipse.swt.SWT.error(Unknown Source)
  at org.eclipse.swt.SWT.error(Unknown Source)
  at org.eclipse.swt.SWT.error(Unknown Source)
  at org.eclipse.swt.widgets.Widget.error(Unknown Source)
  at org.eclipse.swt.widgets.Widget.checkWidget(Unknown Source)
  at org.eclipse.swt.widgets.Text.append(Unknown Source)

메인은 thread 로 돌아가기때문에 중간에 다른일을 시킬수 없다. 그런 프로세스의 실행순서를
등록해서 등록된 thread 를 차례대로 실행시킬 필요가 있는것이다.
메인에서 표현하고자 하는 스레드 관련 일들을 등록하는 함수가 있는데 아래와 같이 표현해주면 된다

Display.getDefault().syncExec(
   new Runnable () {
         public void run() {
              // 원하는 코드 수행
              MainWindow.scanAllDone( control );
         }
   }
);

반응형
Posted by 녹두장군1
,