Всплывающее уведомление не запускается с одним экземпляром

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


    }
Другие вопросы по тегам