2016-04-07 3 views
0

: У меня есть приложение JAVA, на время которого требуется некоторое время. Существует вызов закрыть порт, который занимает очень много времени. Я хочу добавить диалоговое окно, которое указывает пользователю, что приложение закрывается. Обычно я бы создал диалоговое окно, запустил поток, чтобы сделать длинную работу и закрыть диалог, а затем отобразить диалог. Как только работа будет завершена, диалог будет близок. Это не работает для выключения приложения, потому что кажется, что оконный прослушиватель закрывает все окна (вроде имеет смысл, он должен это делать). Я не уверен в этом.JAVA GUI Закрытие диалогового окна приложения

Код:

public void windowClosing(WindowEvent we) 
{ 
    shutDown(); 
} 

public void shutdown() 
{ 
    final JDialog dialog = createDialog(); 
    Thread t = new Thread 
    { 
     public void run() 
     { 
     saveProperties(); 
     ClosePort(); 
     dialog.setVisible(false); 
     System.exit(0);   
     } 
    }; 
    t.start(); 
    dialog.setVisible(true); 
} 
+0

Так что происходит, что диалог никогда не появляется? – Mordechai

+0

Возможный дубликат [* Как закрыть порт в случае завершения программы? *) (Http://stackoverflow.com/q/767292/230513) – trashgod

+0

Диалог появляется, но он исчезает сразу же после того, как оконный прослушиватель завершает – user2899525

ответ

1
t.setDaemon(true); 

, как демон потоков остаться в живых, даже если все остальное ушло.

+0

Поток все еще работает, однако графический интерфейс пользователя обрывается. Пользователь считает, что приложение завершено, однако оно все еще находится в фоновом режиме. Если они откроют другое приложение до закрытия оригинала, это создаст проблемы. – user2899525

+0

@ user2899525 Действительный пункт. Например, представьте себе закрытие приложения, а затем выключение системы. Возможно, экономия должна производиться быстрее. –

Смежные вопросы