From 7be65a0428a4527889b6955c56aafdb81dda28a8 Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期六, 22 十一月 2025 11:20:39 +0800
Subject: [PATCH] 开启状态线程,优化结束程序逻辑
---
src/home/Homein.java | 67 +++++++++++++++++++++++++++++++++
1 files changed, 66 insertions(+), 1 deletions(-)
diff --git a/src/home/Homein.java b/src/home/Homein.java
index d0de3f1..26f2139 100644
--- a/src/home/Homein.java
+++ b/src/home/Homein.java
@@ -6,9 +6,25 @@
import chushihua.Chushihua;
import chushihua.SlotManager;
import chushihua.lunxun;
+import dialog.Dingshidialog;
+import jiekou.lunxunkazhuangtai;
+
+import java.io.IOException;
+import java.net.ServerSocket;
public class Homein {
+ // 鍗曞疄渚嬮攣鐨勭鍙e彿锛岄�夋嫨涓�涓笉甯哥敤鐨勭鍙�
+ private static final int SINGLE_INSTANCE_PORT = 9999;
+ private static ServerSocket singleInstanceSocket;
+
public static void main(String[] args) {
+ // 妫�鏌ユ槸鍚﹀凡鏈夊疄渚嬪湪杩愯
+ if (!checkSingleInstance()) {
+ Dingshidialog.showTimedDialog(null,5, "杞欢宸茬粡鍦ㄨ繍琛屼腑锛屼笉鑳介噸澶嶆墦寮�锛�");
+ System.exit(0);
+ return;
+ }
+
SwingUtilities.invokeLater(() -> {
try {
// 璁剧疆绯荤粺澶栬
@@ -26,6 +42,7 @@
"绯荤粺鍒濆鍖栧け璐ワ紝鏃犳硶鍚姩搴旂敤绋嬪簭",
"閿欒",
JOptionPane.ERROR_MESSAGE);
+ cleanupSingleInstanceLock();
System.exit(1);
}
@@ -35,9 +52,50 @@
"绋嬪簭鍚姩澶辫触: " + e.getMessage(),
"閿欒",
JOptionPane.ERROR_MESSAGE);
+ cleanupSingleInstanceLock();
System.exit(1);
}
});
+ }
+
+ /**
+ * 妫�鏌ユ槸鍚﹀崟瀹炰緥杩愯
+ * @return 濡傛灉鏄敮涓�瀹炰緥杩斿洖true锛屽鏋滃凡鏈夊疄渚嬭繍琛岃繑鍥瀎alse
+ */
+ private static boolean checkSingleInstance() {
+ try {
+ // 灏濊瘯缁戝畾鍒版寚瀹氱鍙o紝濡傛灉鎴愬姛璇存槑鏄涓�涓疄渚�
+ singleInstanceSocket = new ServerSocket(SINGLE_INSTANCE_PORT);
+ return true;
+ } catch (IOException e) {
+ // 绔彛宸茶鍗犵敤锛岃鏄庡凡鏈夊疄渚嬪湪杩愯
+ return false;
+ }
+ }
+
+ /**
+ * 娓呯悊鍗曞疄渚嬮攣 - 鏀逛负鍏叡闈欐�佹柟娉曚互渚垮閮ㄨ皟鐢�
+ */
+ public static void cleanupSingleInstanceLock() {
+ if (singleInstanceSocket != null && !singleInstanceSocket.isClosed()) {
+ try {
+ singleInstanceSocket.close();
+ //System.out.println("鍗曞疄渚嬮攣宸叉竻鐞�");
+ } catch (IOException e) {
+ System.err.println("鍏抽棴鍗曞疄渚嬮攣鏃跺彂鐢熷紓甯�: " + e.getMessage());
+ } finally {
+ singleInstanceSocket = null;
+ }
+ }
+
+ // 棰濆纭繚锛氬皾璇曞啀娆$粦瀹氱鍙f潵纭鏄惁宸查噴鏀�
+ try {
+ ServerSocket testSocket = new ServerSocket(SINGLE_INSTANCE_PORT);
+ testSocket.close();
+ //System.out.println("绔彛纭宸查噴鏀�");
+ } catch (IOException e) {
+ System.err.println("绔彛鍙兘浠嶈鍗犵敤: " + e.getMessage());
+ }
}
/**
@@ -127,11 +185,14 @@
if (serialConnected) {
// 4. 涓插彛杩炴帴鎴愬姛鍚庯紝鍚姩杞
startPollingService();
- showMainInterface();
+ showMainInterface();
+ lunxunkazhuangtai.startPolling();//鍚姩鍗$姸鎬佽疆璇㈠彂缁欐湇鍔″櫒
+
} else {
System.err.println("涓插彛杩炴帴澶辫触");
// 涓插彛杩炴帴澶辫触宸茬粡鐢盨erialPortConnectionDialog澶勭悊锛岀洿鎺ラ��鍑�
+ cleanupSingleInstanceLock();
System.exit(0);
}
@@ -142,6 +203,7 @@
"搴旂敤绋嬪簭鍚姩杩囩▼涓彂鐢熼敊璇�: " + e.getMessage(),
"閿欒",
JOptionPane.ERROR_MESSAGE);
+ cleanupSingleInstanceLock();
System.exit(1);
}
}
@@ -267,6 +329,9 @@
mainUI.dispose();
}
+ // 娓呯悊鍗曞疄渚嬮攣 - 纭繚鍦ㄥ叧闂挬瀛愪腑涔熻皟鐢�
+ cleanupSingleInstanceLock();
+
//System.out.println("搴旂敤绋嬪簭鍏抽棴瀹屾垚");
} catch (Exception e) {
--
Gitblit v1.9.3