diff --git a/MonitoringProgram/.vs/MonitoringProgram/FileContentIndex/382665a1-2e8d-4edb-b5b9-8b808e52c7de.vsidx b/MonitoringProgram/.vs/MonitoringProgram/FileContentIndex/382665a1-2e8d-4edb-b5b9-8b808e52c7de.vsidx new file mode 100644 index 0000000..c3dbadf Binary files /dev/null and b/MonitoringProgram/.vs/MonitoringProgram/FileContentIndex/382665a1-2e8d-4edb-b5b9-8b808e52c7de.vsidx differ diff --git a/MonitoringProgram/.vs/MonitoringProgram/FileContentIndex/3dedb203-92c2-40f4-a781-2af4bb9b2ac4.vsidx b/MonitoringProgram/.vs/MonitoringProgram/FileContentIndex/3dedb203-92c2-40f4-a781-2af4bb9b2ac4.vsidx deleted file mode 100644 index 5d8052d..0000000 Binary files a/MonitoringProgram/.vs/MonitoringProgram/FileContentIndex/3dedb203-92c2-40f4-a781-2af4bb9b2ac4.vsidx and /dev/null differ diff --git a/MonitoringProgram/.vs/MonitoringProgram/FileContentIndex/c32e5173-176b-40ca-a46d-e0354fef428d.vsidx b/MonitoringProgram/.vs/MonitoringProgram/FileContentIndex/c32e5173-176b-40ca-a46d-e0354fef428d.vsidx deleted file mode 100644 index 9f6ffb4..0000000 Binary files a/MonitoringProgram/.vs/MonitoringProgram/FileContentIndex/c32e5173-176b-40ca-a46d-e0354fef428d.vsidx and /dev/null differ diff --git a/MonitoringProgram/.vs/MonitoringProgram/FileContentIndex/d9f7800f-2397-44a9-b5a0-46761934ebfc.vsidx b/MonitoringProgram/.vs/MonitoringProgram/FileContentIndex/d9f7800f-2397-44a9-b5a0-46761934ebfc.vsidx new file mode 100644 index 0000000..1285435 Binary files /dev/null and b/MonitoringProgram/.vs/MonitoringProgram/FileContentIndex/d9f7800f-2397-44a9-b5a0-46761934ebfc.vsidx differ diff --git a/MonitoringProgram/.vs/MonitoringProgram/FileContentIndex/f9edf360-037a-4a13-bc09-9a5f6073ef39.vsidx b/MonitoringProgram/.vs/MonitoringProgram/FileContentIndex/f9edf360-037a-4a13-bc09-9a5f6073ef39.vsidx new file mode 100644 index 0000000..4fdd53b Binary files /dev/null and b/MonitoringProgram/.vs/MonitoringProgram/FileContentIndex/f9edf360-037a-4a13-bc09-9a5f6073ef39.vsidx differ diff --git a/MonitoringProgram/.vs/MonitoringProgram/v17/.suo b/MonitoringProgram/.vs/MonitoringProgram/v17/.suo index 413bf0b..e0ba657 100644 Binary files a/MonitoringProgram/.vs/MonitoringProgram/v17/.suo and b/MonitoringProgram/.vs/MonitoringProgram/v17/.suo differ diff --git a/MonitoringProgram/MonitoringProgram/Form1.cs b/MonitoringProgram/MonitoringProgram/Form1.cs index 1b07f5c..708bab1 100644 --- a/MonitoringProgram/MonitoringProgram/Form1.cs +++ b/MonitoringProgram/MonitoringProgram/Form1.cs @@ -5,9 +5,13 @@ using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; +using System.Net.NetworkInformation; +using System.Net; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using System.Runtime.InteropServices; + namespace MonitoringProgram { @@ -22,10 +26,26 @@ namespace MonitoringProgram this.Left = -10000; this.Top = -10000;//宽高属性窗口位置放置到桌面界面外 this.Opacity = 0;//最重要的一个属性 不透明度 - string exePath = "F:\\Code\\yibayiyi\\ZTTMS_Manage_yibayiyi_KeepaliveTest3_DN_V1.0\\ZTTMS_Manage_yibayiyi_20230320\\bin\\Debug\\ZTTMS_Manage_yibayiyi_20230320.exe"; - - var target = Process.Start(exePath, "auto"); - targetProcessId = target.Id; + Process[] process = Process.GetProcessesByName("ZTTMS_Manage_yibayiyi_20230320"); + if (process.Length == 0) + { + bool isUse = PortInUse(55000); + Console.WriteLine("端口占用情况:" + isUse.ToString()); + if (isUse) + { + //端口被占用 + portInUseTime++; + } + else + { + var target = Process.Start(exePath, "auto"); + targetProcessId = target.Id; + } + } + else + { + targetProcessId = process[0].Id; + } Console.WriteLine(targetProcessId); @@ -37,31 +57,26 @@ namespace MonitoringProgram //PID int targetProcessId = 0; + string exePath = "F:\\Code\\yibayiyi\\20230201_1811_upperpc\\ZTTMS_Manage_yibayiyi_KeepaliveTest3_GKJ_V1.2\\ZTTMS_Manage_yibayiyi_20230320\\bin\\Debug\\ZTTMS_Manage_yibayiyi_20230320.exe"; - //通过exe的允许路径 查找对应的进程 - private Process FindMainProcessByPath(string exePath) + int portInUseTime = 0; + + + //判断端口是否被占用 + public static bool PortInUse(int port) { - Process target = null; - - foreach (var p in Process.GetProcesses()) + bool inUse = false; + IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties(); + IPEndPoint[] ipEndPoints = ipProperties.GetActiveTcpListeners(); + foreach (IPEndPoint endPoint in ipEndPoints) { - try + if (endPoint.Port == port) { - if (p.MainModule.FileName == exePath) - { - if (p.Id != Process.GetCurrentProcess().Id) - { - target = p; - break; - } - } - } - catch (Exception ex) - { - Console.WriteLine(ex.Message); + inUse = true; + break; } } - return target; + return inUse; // 返回true说明端口被占用 } @@ -107,36 +122,69 @@ namespace MonitoringProgram } } + private void timerCheckProcessState_Tick(object sender, EventArgs e) { - Process process = null; + Process[] process = null; try { // 获取指定ID的进程 - process = Process.GetProcessById(targetProcessId); + //process = Process.GetProcessById(targetProcessId); + process = Process.GetProcessesByName("ZTTMS_Manage_yibayiyi_20230320"); } - catch { } - - if (process == null) + catch (Exception ex) { - Console.WriteLine("进程不存在或已退出,需要重启!"); - // 进程不存在 已退出 ,需要重启 - // 重启代码 - string exePath = "F:\\Code\\yibayiyi\\ZTTMS_Manage_yibayiyi_KeepaliveTest3_DN_V1.0\\ZTTMS_Manage_yibayiyi_20230320\\bin\\Debug\\ZTTMS_Manage_yibayiyi_20230320.exe"; - - var target = Process.Start(exePath, "auto"); - targetProcessId = target.Id; + Console.WriteLine("GetProcessByIdError:" + ex.Message); } - else if(checkProcess(process)==false) + + try { - //进程卡死 - process.Kill(); + if (process == null || process.Length == 0) + { + Console.WriteLine("进程不存在或已退出,开始监测端口是否被占用!"); - //重启进程 - string exePath = "F:\\Code\\yibayiyi\\ZTTMS_Manage_yibayiyi_KeepaliveTest3_DN_V1.0\\ZTTMS_Manage_yibayiyi_20230320\\bin\\Debug\\ZTTMS_Manage_yibayiyi_20230320.exe"; + bool isUse = PortInUse(55000); + Console.WriteLine("端口占用情况:" + isUse.ToString()); + if (isUse) + { + //端口被占用 + portInUseTime++; - var target = Process.Start(exePath, "auto"); - targetProcessId = target.Id; + if (portInUseTime > 4) + { + //重启工控机,30s后重启 + Process.Start("shutdown", "/r /t 30"); // 参数 /r 的意思是要重新启动计算机 + } + } + else + { + //端口未被占用 + portInUseTime = 0; + + // 进程不存在 已退出 ,需要重启 + // 重启代码 + var target = Process.Start(exePath, "auto"); + targetProcessId = target.Id; + } + } + else if (checkProcess(process[0]) == false) + { + Console.WriteLine("进程卡死,30后重启计算机!"); + + //进程卡死 + process[0].Kill(); + + //重启工控机,30s后重启 + Process.Start("shutdown", "/r /t 30"); // 参数 /r 的意思是要重新启动计算机 + } + else + { + Console.WriteLine("进程继续运行!"); + } + } + catch (Exception ex) + { + Console.WriteLine("CheckProcessStateError:" + ex.Message); } } } diff --git a/MonitoringProgram/MonitoringProgram/bin/Debug/MonitoringProgram.exe b/MonitoringProgram/MonitoringProgram/bin/Debug/MonitoringProgram.exe index 1557c05..66fff35 100644 Binary files a/MonitoringProgram/MonitoringProgram/bin/Debug/MonitoringProgram.exe and b/MonitoringProgram/MonitoringProgram/bin/Debug/MonitoringProgram.exe differ diff --git a/MonitoringProgram/MonitoringProgram/bin/Debug/MonitoringProgram.pdb b/MonitoringProgram/MonitoringProgram/bin/Debug/MonitoringProgram.pdb index e059671..0a19c2b 100644 Binary files a/MonitoringProgram/MonitoringProgram/bin/Debug/MonitoringProgram.pdb and b/MonitoringProgram/MonitoringProgram/bin/Debug/MonitoringProgram.pdb differ diff --git a/MonitoringProgram/MonitoringProgram/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/MonitoringProgram/MonitoringProgram/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache index ef78dcf..de72963 100644 Binary files a/MonitoringProgram/MonitoringProgram/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/MonitoringProgram/MonitoringProgram/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/MonitoringProgram/MonitoringProgram/obj/Debug/MonitoringProgram.csproj.FileListAbsolute.txt b/MonitoringProgram/MonitoringProgram/obj/Debug/MonitoringProgram.csproj.FileListAbsolute.txt index 2486891..d772ad7 100644 --- a/MonitoringProgram/MonitoringProgram/obj/Debug/MonitoringProgram.csproj.FileListAbsolute.txt +++ b/MonitoringProgram/MonitoringProgram/obj/Debug/MonitoringProgram.csproj.FileListAbsolute.txt @@ -9,3 +9,14 @@ F:\Code\yibayiyi\MonitoringProgram\MonitoringProgram\obj\Debug\MonitoringProgram F:\Code\yibayiyi\MonitoringProgram\MonitoringProgram\obj\Debug\MonitoringProgram.exe F:\Code\yibayiyi\MonitoringProgram\MonitoringProgram\obj\Debug\MonitoringProgram.pdb F:\Code\yibayiyi\MonitoringProgram\MonitoringProgram\obj\Debug\MonitoringProgram.Form1.resources +F:\Code\yibayiyi\20230201_1811_upperpc_Monitor\MonitoringProgram\MonitoringProgram\bin\Debug\MonitoringProgram.exe.config +F:\Code\yibayiyi\20230201_1811_upperpc_Monitor\MonitoringProgram\MonitoringProgram\bin\Debug\MonitoringProgram.exe +F:\Code\yibayiyi\20230201_1811_upperpc_Monitor\MonitoringProgram\MonitoringProgram\bin\Debug\MonitoringProgram.pdb +F:\Code\yibayiyi\20230201_1811_upperpc_Monitor\MonitoringProgram\MonitoringProgram\obj\Debug\MonitoringProgram.csproj.AssemblyReference.cache +F:\Code\yibayiyi\20230201_1811_upperpc_Monitor\MonitoringProgram\MonitoringProgram\obj\Debug\MonitoringProgram.csproj.SuggestedBindingRedirects.cache +F:\Code\yibayiyi\20230201_1811_upperpc_Monitor\MonitoringProgram\MonitoringProgram\obj\Debug\MonitoringProgram.Form1.resources +F:\Code\yibayiyi\20230201_1811_upperpc_Monitor\MonitoringProgram\MonitoringProgram\obj\Debug\MonitoringProgram.Properties.Resources.resources +F:\Code\yibayiyi\20230201_1811_upperpc_Monitor\MonitoringProgram\MonitoringProgram\obj\Debug\MonitoringProgram.csproj.GenerateResource.cache +F:\Code\yibayiyi\20230201_1811_upperpc_Monitor\MonitoringProgram\MonitoringProgram\obj\Debug\MonitoringProgram.csproj.CoreCompileInputs.cache +F:\Code\yibayiyi\20230201_1811_upperpc_Monitor\MonitoringProgram\MonitoringProgram\obj\Debug\MonitoringProgram.exe +F:\Code\yibayiyi\20230201_1811_upperpc_Monitor\MonitoringProgram\MonitoringProgram\obj\Debug\MonitoringProgram.pdb diff --git a/MonitoringProgram/MonitoringProgram/obj/Debug/MonitoringProgram.exe b/MonitoringProgram/MonitoringProgram/obj/Debug/MonitoringProgram.exe index 1557c05..66fff35 100644 Binary files a/MonitoringProgram/MonitoringProgram/obj/Debug/MonitoringProgram.exe and b/MonitoringProgram/MonitoringProgram/obj/Debug/MonitoringProgram.exe differ diff --git a/MonitoringProgram/MonitoringProgram/obj/Debug/MonitoringProgram.pdb b/MonitoringProgram/MonitoringProgram/obj/Debug/MonitoringProgram.pdb index e059671..0a19c2b 100644 Binary files a/MonitoringProgram/MonitoringProgram/obj/Debug/MonitoringProgram.pdb and b/MonitoringProgram/MonitoringProgram/obj/Debug/MonitoringProgram.pdb differ