Java-как отправить событие в поток пользовательского интерфейса или вызвать функцию потока пользовательского интерфейса?
У меня есть java-код, который выглядит следующим образом:
//UI thread
//Some code
Job j = new Job(jobName) {
@Override
public IStatus run(IProgressMonitor monitor) {
try {
//Some code
SomeFunc();
//Some code
return Status.OK_STATUS;
} catch(Exception e) {
}
finally {
}
}
};
j.schedule();
Проблема заключается в том, что SomeFunc(); должен быть вызван из потока пользовательского интерфейса.
Я новичок в java, поэтому не могли бы вы помочь мне с показом лучших методов для отправки события в поток пользовательского интерфейса или вызова функции потока пользовательского интерфейса?
3 ответов:
Стоит взглянуть на учебник Eclipse Jobs and Background Processing Ларса Фогеля. Есть хорошие примеры о том, как запустить код в потоке пользовательского интерфейса из заданий Eclipse.
EventQueue.invokeLater(new Runnable() { @Override public void run() { // your UI code } });Или вы можете использовать SwingWorker, его другой выбор: http://docs.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html
В SWT используйте Display.syncExec () как в Этот фрагмент или Display.asyncExec ().
Comments