2016-04-07 21 views
0

Ayrıntılar: Kapanmaya biraz zaman ayıran bir JAVA uygulamasına sahibim. Bir limanı kapatmak için bir çağrı var, bu gerçekten uzun bir zaman alıyor. Kullanıcının uygulamayı kapattığını belirten bir iletişim kutusu eklemek istiyorum. Normalde, bir iletişim kutusu oluşturabilir, uzun bir iş yapmak ve iletişim kutusunu kapatmak için bir iş parçacığı başlatır, sonra iletişim kutusunu görüntülerim. İş bittiğinde, diyalog yakın olacaktır. Bu bir uygulamayı kapatmak için çalışmaz, çünkü pencere dinleyicisi tüm pencereleri kapatır (mantıklıdır, bunu yapması gerekiyordu). Bunun bir yolu olduğundan emin değilim.JAVA GUI Uygulama İletişimini Kapatma

Kodu: Daemon iş parçacıkları olarak

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

Peki, iletişim kutusu hiç görünmüyor mu? – Mordechai

+0

Olası kopyası [* Program sonlandırması durumunda bir bağlantı noktasını nasıl kapatırım? *] (Http://stackoverflow.com/q/767292/230513) – trashgod

+0

İletişim kutusu belirir, ancak pencere dinleyicisi – user2899525

cevap

1
t.setDaemon(true); 

kalanı gitmiş olsa bile hayatta kalmak.

+0

İş parçacığı hala çalışıyor, ancak GUI siliniyor. Bir kullanıcı uygulamanın tamamlandığını düşünüyor, ancak hala arka planda çalışıyor. Orijinal kapanmadan önce başka bir uygulama açarlarsa, bu sorun oluşturur. – user2899525

+0

@ user2899525 Geçerli bir nokta. Örneğin uygulamayı kapatmayı ve sistemi kapatmayı hayal edin. Belki de tasarruf daha hızlı yapılmalıdır. –