2014-08-25 4 views
0

Я хочу отображать уведомление, когда пользователь пытается запустить приложение во второй раз. Поэтому я создаю объект NotificationPop obj и вызываю метод для отображения диалога внутри моего одного класса экземпляра, но это не отображается всплывающее окно, когда приложение запускается во второй раз, нет проблем с моим окном NotificationPop, он функционирует нормально, но когда я его вызываю в Single Instance, не отображается. в окне вывода Netbeans он также отображает диалоговое окно. Пропустить какой-нибудь шаг здесь?Всплывающее окно с уведомлением не запускается с одним экземпляром

import java.io.File; 
import java.io.IOException; 
import java.io.RandomAccessFile; 
import java.nio.channels.FileChannel; 
import java.nio.channels.FileLock; 

public class SingleInstance { 

    public static File f; 
    public static FileChannel channel; 
    public static FileLock lock; 
    public static TrayCon trayobj; 
    public static boolean checkstatus; 
    public static NotificationPop obj; 

    public static void main(String args[]) throws IOException { 
     try { 
      f = new File("key"); 
      if (f.exists()) { 
       f.delete(); 
      } 
      channel = new RandomAccessFile(f, "rw").getChannel(); 
      lock = channel.tryLock(); 
      if (lock == null) { 
       obj = new NotificationPop(); 
       obj.displaypopupmessage(); 
       System.exit(0); 
       channel.close(); 
       throw new RuntimeException("Only 1 instance can run"); 
      } 

      java.awt.EventQueue.invokeLater(new Runnable() { 
       public void run() { 

        trayobj = new TrayCon(); 
        trayobj.CreateTrayCon(trayobj); 
       } 
      }); 

     } catch (IOException ex) { 
     } 
    } 
} 
+0

Почему вы удалите файл (особенно вне секции замка)? – MadProgrammer

+0

вы имеете в виду, если фрагмент, позвольте мне добавить его там, – mussdroid

+0

Я уверен, что я размещен здесь два (три) различных кода в форме SSCCE/MCVE (наиболее важных) для одного экземпляра FileIO/Socket/???, из вашего кода невозможно предложить что-то – mKorbel

ответ

0

ок я добавил нить сна 6 секунд, исправили проблему

 if (lock == null) { 

     obj = new NotificationPop(); 
     obj.proragramstatuswarning(); 
     Thread.sleep(6000); 
     System.exit(0); 
     channel.close(); 
     throw new RuntimeException("Only 1 instance can run"); 


    }