Качели invokelater заморозить - PullRequest
       18

Качели invokelater заморозить

3 голосов
/ 12 сентября 2011

я вызываю invokeLater непосредственно из кнопки на действии. Выполняется с помощью этого кода:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
   SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            int temp = (jComboBox1.getSelectedIndex() + 1);
        heavyProccesingFunction();
        }
   });
} 

и это все еще замораживает GUI. Зачем? Я получаю тот же результат без использования функции invokelater.

я должен использовать

Thread queryThread = new Thread() {
      public void run() { 

вместо

Edit:

Спасибо, следует использовать новую тему.

1 Ответ

5 голосов
/ 12 сентября 2011

invokeLater все равно заканчивается тем, что запускает код в потоке диспетчера - чуть позже.Цель invokeLater - позволить потокам background публиковать работу в потоке диспетчера событий.

Похоже, вам действительно следует создать другой поток - или использовать пул потоков для того жесвоего рода эффект, или SwingWorker например.Что бы вы ни делали, вам нужно избегать запуска медленного метода в потоке диспетчера событий.

...