diff --git a/Form1.cs b/Form1.cs index 7fd10ce..b655df9 100644 --- a/Form1.cs +++ b/Form1.cs @@ -74,7 +74,7 @@ namespace Process_Auto_Relaunch { radioButtonEnableWathing.Checked = Settings.Default.enableWatching; } - + } /// @@ -211,7 +211,7 @@ namespace Process_Auto_Relaunch // webhookDiscordToolStripMenuItem.Enabled = !watching; // отключаем меню настроек settingsToolStripMenuItem.Enabled = !watching; - + Settings.Default.enableWatching = watching; } @@ -268,37 +268,58 @@ namespace Process_Auto_Relaunch return false; } + /// + /// Обнаружение зависшего процесса по нагрузке + /// + /// + /// private void ProcessCheckResponding(bool cpuResponding, double cpuPrecent) { if (cpuResponding || cpuPrecent > 0.01) { - if (waitResponceTimer != null) + // Процесс отвечает + // Если таймер ожидания запущен - отключаем. + if (TimerResponceRuning()) { StopTimerWaitingResponce(); } return; } + // Процесс не отвечает + // Если таймер ожидания не запущен - запускаем if (!TimerResponceRuning()) { - StartTimerWaitingResponce(); + StartTimerWaitingResponce(5000, ProcessNotResponding); } } + /// + /// Проверяет запущен ли таймер ожидания процесса + /// + /// True, если запущен private bool TimerResponceRuning() { return waitResponceTimer != null /*&& waitResponceTimer.Enabled*/; } - private void StartTimerWaitingResponce() + /// + /// Метод запуска таймера для ожидания процесса + /// + /// Интервал таймера + /// Метод, вызываемый после окончания таймера + private void StartTimerWaitingResponce(double interval, ElapsedEventHandler timerElapsed) { - Debug.WriteLine("Запуск таймера ожидания процесса."); - waitResponceTimer = new System.Timers.Timer(5000); - waitResponceTimer.Elapsed += ProcessNotResponding; + Debug.WriteLine($"Запуск таймера {interval} ms."); + waitResponceTimer = new System.Timers.Timer(interval); + waitResponceTimer.Elapsed += timerElapsed; waitResponceTimer.AutoReset = false; waitResponceTimer.Enabled = true; } + /// + /// Остановка таймера ожидания процесса + /// private void StopTimerWaitingResponce() { Debug.WriteLine("Остановка таймера ожидания процесса."); @@ -333,7 +354,7 @@ namespace Process_Auto_Relaunch { if (ProcessByNameIsRuning(path)) { - return; + return; } // Процесс не запущен diff --git a/Process Auto Relaunch.csproj b/Process Auto Relaunch.csproj index 92de599..18b025e 100644 --- a/Process Auto Relaunch.csproj +++ b/Process Auto Relaunch.csproj @@ -13,6 +13,7 @@ true true + false publish\ true Disk @@ -25,7 +26,6 @@ true 0 1.0.0.%2a - false false true diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index c033f31..22b6755 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; // Номер сборки // Редакция // -[assembly: AssemblyVersion("1.4.0.0")] -[assembly: AssemblyFileVersion("1.4.0.0")] +[assembly: AssemblyVersion("1.5.0.0")] +[assembly: AssemblyFileVersion("1.5.0.0")]