通知弹出窗口不适用于单个实例
Posted
技术标签:
【中文标题】通知弹出窗口不适用于单个实例【英文标题】:Notification popup doesn't run with single instance 【发布时间】:2014-08-25 06:46:24 【问题描述】:我想在用户第二次尝试运行应用程序时显示通知弹出窗口,因此我创建 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)
【问题讨论】:
为什么要删除文件(尤其是在锁定部分之外)? 你的意思是如果片段,让我添加它, 我确定我在这里发布了两个(-三个)SSCCE/MCVE 形式的各种代码(最重要的),用于单实例 FileIO/Socket/???,来自您的代码无法提出建议 @mad 程序员,如果文件夹中已存在文件,则避免重复 这个问题可能对你有用:***.com/questions/177189/… 【参考方案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");
【讨论】:
以上是关于通知弹出窗口不适用于单个实例的主要内容,如果未能解决你的问题,请参考以下文章
html 弹出窗口的GA事件 - 仅适用于按钮(不适用于文本或图像链接)
html 弹出窗口的GA事件 - 仅适用于按钮(不适用于文本或图像链接)
html 弹出窗口的GA事件 - 仅适用于按钮(不适用于文本或图像链接)