Всплывающее уведомление не запускается с одним экземпляром
Я хочу отображать всплывающее уведомление, когда пользователь пытается запустить приложение во второй раз, поэтому я создаю 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) {
}
}
}
1 ответ
Решение
Хорошо, я добавил поток сна 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");
}