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, поэтому не могли бы вы помочь мне с показом лучших методов для отправки события в поток пользовательского интерфейса или вызова функции потока пользовательского интерфейса?

441   3  

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

    Ничего не найдено.