From b351790c78ea4a657500331815b3efcfa1366e2c Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Tue, 1 Dec 2020 11:54:19 +0100 Subject: [PATCH] ancora fix IOB-MAN --- IOB-MAN/IOBManPanel.cs | 67 +++++++++++++++++++++++++++++------------- 1 file changed, 46 insertions(+), 21 deletions(-) diff --git a/IOB-MAN/IOBManPanel.cs b/IOB-MAN/IOBManPanel.cs index 75842b91..2b84f838 100644 --- a/IOB-MAN/IOBManPanel.cs +++ b/IOB-MAN/IOBManPanel.cs @@ -174,7 +174,8 @@ namespace IOB_MAN private void apriChild() { // preventivamente CHIUDO TUTTO - closeAllChild(true); + forceKillByName(TargetName); + //closeAllChild(true); Thread.Sleep(250); // avvio i child foreach (var item in ArgsList) @@ -182,7 +183,7 @@ namespace IOB_MAN startChildProc(item); } numProcAvviati = ArgsList.Count; - numProcRunning = numProcAvviati; + updateNumRunning(); } private void apriChildSel() @@ -202,11 +203,12 @@ namespace IOB_MAN } } } + updateNumRunning(); updateStatus(); } /// - /// Apro un child x fare udpate con parametro che impedisca avvio IOB + /// Apro un child x fare update con parametro che impedisca avvio IOB /// private void apriOneUpdate() { @@ -230,6 +232,7 @@ namespace IOB_MAN this.Close(); } } + updateNumRunning(); } private void AutoUpdater_ApplicationExitEvent() @@ -261,6 +264,7 @@ namespace IOB_MAN // chiude tutto closeAllChild(false); //apriChild(); + updateNumRunning(); updateStatus(); } @@ -322,6 +326,7 @@ namespace IOB_MAN loadConfig(); // apertura apriChild(); + updateNumRunning(); updateStatus(); } @@ -330,6 +335,7 @@ namespace IOB_MAN // chiude tutto closeAllChild(true); apriChild(); + updateNumRunning(); updateStatus(); } @@ -364,7 +370,14 @@ namespace IOB_MAN if (processList.Length > 0) { Process p = myGetProcByID(processList, item.pID); - needRem = p.HasExited; + if (p != null) + { + needRem = p.HasExited; + } + else + { + needRem = true; + } } else { @@ -382,7 +395,6 @@ namespace IOB_MAN item2rem.Add(item); } item.isRunning = false; - numProcRunning--; } else { @@ -433,10 +445,6 @@ namespace IOB_MAN IList allItems = (IList)ElencoIOB.List; bool needRem = false; -#if false - numProcRunning = numProcAvviati; -#endif - // 2020.02.01 passato chiamata specifica x leggere in 1 sola volta TUTTO elenco processi (x nome)... Process[] processList = Process.GetProcessesByName(TargetName); @@ -489,6 +497,7 @@ namespace IOB_MAN } } } + updateNumRunning(); updateStatus(); } @@ -496,6 +505,8 @@ namespace IOB_MAN { // se tolgo autorestart --> imposto NUOVA scadenza x forzare check tOutAutocheck = 60 * utils.CRI("autoRestartTimeoutMin") * (1000 / (utils.CRI("checkPeriod"))); + txtTOutAutoCheck.Visible = !chkAutoRestart.Checked; + btnMoreTOut.Visible = !chkAutoRestart.Checked; // fa subito controllo riavvio... processAutoRestart(); } @@ -579,6 +590,7 @@ namespace IOB_MAN } catch { } + updateNumRunning(); } private void closeTimers() @@ -722,11 +734,11 @@ namespace IOB_MAN private void ElencoIOB_AddingNew(object sender, System.ComponentModel.AddingNewEventArgs e) { - //updateStatus(); } private void ElencoIOB_ListChanged(object sender, System.ComponentModel.ListChangedEventArgs e) { + updateNumRunning(); } private void forceCheckTimer_Tick(object sender, EventArgs e) @@ -1127,7 +1139,6 @@ namespace IOB_MAN { ElencoIOB.Insert(indice, newIob); } - numProcRunning++; utils.lgInfo($"Avviato child process per {procArg} | pid: {p.Id}"); } @@ -1163,6 +1174,21 @@ namespace IOB_MAN apriOneUpdate(); } + private void updateNumRunning() + { + // ricalcolo running... + numProcRunning = 0; + // ciclo su row selezionate + foreach (DataGridViewRow riga in dgvManagedItems.Rows) + { + // verifico che sia già chiuso... + if (((iobAdapt)ElencoIOB[riga.Index]).isRunning) + { + numProcRunning++; + } + } + } + private async Task updateProgBarAsync() { await Task.Run(() => performBarAdvance()).ConfigureAwait(false); @@ -1196,31 +1222,30 @@ namespace IOB_MAN tsslNumProc.ForeColor = Color.OrangeRed; hlRestart = true; } + // se NON checked aggiorno contatore... + if (!chkAutoRestart.Checked) + { + tOutAutocheck--; + txtTOutAutoCheck.Text = $"{(tOutAutocheck / (1000 / (utils.CRI("checkPeriod"))))}"; + } // se è variato... if (hlRestart != lastHlRestart) { + tOutAutocheck = 60 * utils.CRI("autoRestartTimeoutMin") * (1000 / (utils.CRI("checkPeriod"))); lastHlRestart = hlRestart; // fix autorestart... if (hlRestart) { chkAutoRestart.ForeColor = System.Drawing.Color.Red; chkAutoRestart.Text = "Auto Restart!!!"; - txtTOutAutoCheck.Visible = true; - btnMoreTOut.Visible = true; - // se NON checked aggiorno contatore... - if (!chkAutoRestart.Checked) - { - tOutAutocheck--; - txtTOutAutoCheck.Text = $"{(tOutAutocheck / (1000 / (utils.CRI("checkPeriod"))))}"; - } } else { chkAutoRestart.ForeColor = DefaultForeColor; chkAutoRestart.Text = "Auto Restart"; - txtTOutAutoCheck.Visible = false; - btnMoreTOut.Visible = false; } + txtTOutAutoCheck.Visible = !chkAutoRestart.Checked; + btnMoreTOut.Visible = !chkAutoRestart.Checked; } }), ""); }