From 38b0c67686b8bae9a439fc90e1efa44c8be82895 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Tue, 1 Dec 2020 11:12:02 +0100 Subject: [PATCH] update comportamento IOB-MAN --- IOB-MAN/IOBManPanel.cs | 150 ++++++++++++++++++++++++++--------------- 1 file changed, 96 insertions(+), 54 deletions(-) diff --git a/IOB-MAN/IOBManPanel.cs b/IOB-MAN/IOBManPanel.cs index ca66b46d..75842b91 100644 --- a/IOB-MAN/IOBManPanel.cs +++ b/IOB-MAN/IOBManPanel.cs @@ -44,6 +44,11 @@ namespace IOB_MAN #region Protected Fields + /// + /// elenco item da rimuovere x check andato male... + /// + protected static List item2rem = new List(); + /// /// Ramo applicazione (x update) /// @@ -64,6 +69,21 @@ namespace IOB_MAN /// protected int forceCheckPeriod = 60000; + /// + /// Indica ultimo stato del check di restart... + /// + protected bool lastHlRestart = false; + + /// + /// Totale processi avviati - ULTIMO dato mostrato + /// + protected int lastNumProcAvviati = 0; + + /// + /// Totale processi running - ULTIMO dato mostrato + /// + protected int lastNumProcRunning = 0; + /// /// Totale processi avviati /// @@ -92,7 +112,7 @@ namespace IOB_MAN /// /// Counter del timer UI /// - protected int uiPeriod = 200; + protected int uiPeriod = 250; /// /// Ms di attesa x uscita processo (std) @@ -328,38 +348,46 @@ namespace IOB_MAN btnClose.Enabled = selected; } - private bool checkIstance(iobAdapt item, List item2rem, Process[] processList) + private bool checkIstance(iobAdapt item, Process[] processList) { bool needRem; - // verifico se esista il processo... - try - { - if (processList.Length > 0) - { - Process p = myGetProcByID(processList, item.pID); - needRem = p.HasExited; - } - else - { - needRem = true; - } - } - catch + // verifico se non sia già stato segnato x rimozione...) + if (item2rem.Find(x => x.pID == item.pID) != null) { needRem = true; } - if (needRem) - { - if (!item2rem.Contains(item)) - { - item2rem.Add(item); - } - item.isRunning = false; - numProcRunning--; - } else { - item.isRunning = true; + // verifico se esista il processo... + try + { + if (processList.Length > 0) + { + Process p = myGetProcByID(processList, item.pID); + needRem = p.HasExited; + } + else + { + needRem = true; + } + } + catch + { + needRem = true; + } + if (needRem) + { + if (!item2rem.Contains(item)) + { + item2rem.Add(item); + } + item.isRunning = false; + numProcRunning--; + } + else + { + item.isRunning = true; + } } return needRem; @@ -402,11 +430,12 @@ namespace IOB_MAN /// private void checkRunningchild() { - List item2rem = new List(); 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); @@ -414,7 +443,7 @@ namespace IOB_MAN // ciclo Parallel.ForEach(allItems, item => { - needRem = checkIstance(item, item2rem, processList); + needRem = checkIstance(item, processList); } ); // aggiorno datagrid! @@ -477,8 +506,7 @@ namespace IOB_MAN /// resetta elenco private void closeAllChild(bool doReset) { - List item2rem = new List(); - + item2rem.Clear(); foreach (iobAdapt item in ElencoIOB.List) { item2rem.Add(item); @@ -529,6 +557,8 @@ namespace IOB_MAN ElencoIOB.Clear(); numProcAvviati = 0; } + // resetto + item2rem.Clear(); numProcRunning = 0; // update! updateStatus(); @@ -692,7 +722,7 @@ namespace IOB_MAN private void ElencoIOB_AddingNew(object sender, System.ComponentModel.AddingNewEventArgs e) { - updateStatus(); + //updateStatus(); } private void ElencoIOB_ListChanged(object sender, System.ComponentModel.ListChangedEventArgs e) @@ -908,7 +938,7 @@ namespace IOB_MAN /// private void MainTimer_Tick(object sender, EventArgs e) { - MainTimer.Stop(); + //MainTimer.Stop(); if (!checkRunning) { //checkProcessStatusAsync(); @@ -922,7 +952,7 @@ namespace IOB_MAN Logging.Instance.Error($"MainTimer_Tick {exc}"); } } - MainTimer.Start(); + //MainTimer.Start(); } /// @@ -1097,6 +1127,7 @@ namespace IOB_MAN { ElencoIOB.Insert(indice, newIob); } + numProcRunning++; utils.lgInfo($"Avviato child process per {procArg} | pid: {p.Id}"); } @@ -1106,10 +1137,10 @@ namespace IOB_MAN private void UI_Timer_Tick(object sender, EventArgs e) { - UI_Timer.Stop(); + //UI_Timer.Stop(); Task result = updateProgBarAsync(); result.Wait(); - UI_Timer.Start(); + //UI_Timer.Start(); } private void updateIOBWINToolStripMenuItem_Click(object sender, EventArgs e) @@ -1141,8 +1172,14 @@ namespace IOB_MAN { synchronizationContext.Post(new SendOrPostCallback(o => { - // aggiorno labels - tsslNumProc.Text = $"Configurati {ArgsList.Count} processi | Avviati: {numProcAvviati} | Attivi: {numProcRunning}"; + // aggiorno SOLO SE sono variati... + if (lastNumProcAvviati != numProcAvviati || lastNumProcRunning != numProcRunning) + { + // aggiorno labels + tsslNumProc.Text = $"Configurati {ArgsList.Count} processi | Avviati: {numProcAvviati} | Attivi: {numProcRunning}"; + lastNumProcAvviati = numProcAvviati; + lastNumProcRunning = numProcRunning; + } bool hlRestart = false; // colore da num proc... if (numProcRunning == ArgsList.Count) @@ -1159,26 +1196,31 @@ namespace IOB_MAN tsslNumProc.ForeColor = Color.OrangeRed; hlRestart = true; } - // fix autorestart... - if (hlRestart) + // se è variato... + if (hlRestart != lastHlRestart) { - chkAutoRestart.ForeColor = System.Drawing.Color.Red; - chkAutoRestart.Text = "Auto Restart!!!"; - txtTOutAutoCheck.Visible = true; - btnMoreTOut.Visible = true; - // se NON checked aggiorno contatore... - if (!chkAutoRestart.Checked) + lastHlRestart = hlRestart; + // fix autorestart... + if (hlRestart) { - tOutAutocheck--; - txtTOutAutoCheck.Text = $"{(tOutAutocheck / (1000 / (utils.CRI("checkPeriod"))))}"; + 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; } - } - else - { - chkAutoRestart.ForeColor = DefaultForeColor; - chkAutoRestart.Text = "Auto Restart"; - txtTOutAutoCheck.Visible = false; - btnMoreTOut.Visible = false; } }), ""); }