Java
[Java] Invalid Thread Access Error with Java SWT
leechwin
2013. 10. 2. 17:38
Java 의 SWT 관련 Component 들을 사용하다가 다음과 같이 Invalid thread access 라는 Error 가 발생하는 경우가 있다.
org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:4282) at org.eclipse.swt.SWT.error(SWT.java:4197) at org.eclipse.swt.SWT.error(SWT.java:4168) at org.eclipse.swt.widgets.Display.error(Display.java:1210) |
외부 Thread 에서 SWT Component 를 사용하려고 할 때 발생하는 에러로 SWT Component 는 UI 스레드에서만 Access 가능하다.
그렇기 때문에 이를 해결하려면 UI Thread 내에서 SWT Component 를 사용하도록 바꿔야 한다.
다음 메소드를 사용하여 UI Thread 내에서 Job 들을 수행할 수 있다.
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
// swt code
}
});
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
// swt code
}
});
참고: http://stackoverflow.com/questions/5980316/invalid-thread-access-error-with-java-swt