2012-04-03 2 views
0

swt에서 응용 프로그램을 구축 중이며 변경 사항 (db 또는 다른 응용 프로그램에 직접 적용)에 대해 데이터베이스를 폴링하는 스레드가 있습니다.SWT에서 사용자 정의 이벤트를 발생시키는 방법은 무엇입니까?

변경 사항을 선택할 수 있지만 새로 고침을 내 인터페이스에 알려야하며 스레드에서 직접 새로 고친 메서드를 호출했지만 시도는 SWTException "Invalid Thread Access"입니다.

스레드 내에서 내 자신의 이벤트를 만드는 방법이 있습니다. 그러면 데이터베이스에서 변경 사항을 찾은 후 수동으로 실행하고 새로 고쳐야하는 클래스에 의해 선택됩니다.

...

덕분에 나는 SWT 이벤트에서 보았다하지만 난 단지 위젯에 부착 된 단지 위젯 자체를 통해 발사 할 수 사람을 찾을 수가 있습니다!

답변

2

사용자 인터페이스 스레드에서 사용자 인터페이스를 업데이트해야합니다.

Display.getDefault().syncExec(new Runnable() { ... }); 

나 :

Display.getDefault().asyncExec(new Runnable() { ... }); 
그 작업을 수행하는

한 가지 방법은 org.eclipse.swt.widgets.Display 클래스에 다음 방법 중 하나를 사용하는 것입니다

관련 문제