diff --git a/IOB-MAN/IOBManPanel.cs b/IOB-MAN/IOBManPanel.cs index 426164d3..7226eac0 100644 --- a/IOB-MAN/IOBManPanel.cs +++ b/IOB-MAN/IOBManPanel.cs @@ -7,10 +7,6 @@ namespace IOB_MAN { public partial class IOBManPanel : Form { - /// - /// Elenco dei processi - /// - protected Dictionary childFormList; /// /// Binding source degli elementi gestiti.. /// @@ -24,7 +20,6 @@ namespace IOB_MAN private void myInit() { - childFormList = new Dictionary(); // gestione eventi binding source ElencoIOB.AddingNew += ElencoIOB_AddingNew; ElencoIOB.ListChanged += ElencoIOB_ListChanged; @@ -46,7 +41,7 @@ namespace IOB_MAN private void updateStatus() { // aggiorno labels - lblNumChild.Text = $"Avviati {childFormList.Count} / {childList.Items.Count} / {ElencoIOB.Count} processi child"; + lblNumChild.Text = $"Avviati {childList.Items.Count} / {ElencoIOB.Count} processi child"; //dgvManagedItems.bind } /// @@ -83,7 +78,6 @@ namespace IOB_MAN newIob.startTime = adesso; newIob.pID = p.Id; newIob.isRunning = true; - childFormList.Add(newIob.CodIOB, newIob); // aggiorno elenco... childList.Items.Add(p.Id); // aggiungo a datasource @@ -131,7 +125,6 @@ namespace IOB_MAN ElencoIOB.RemoveAt(riga.Index); // rimuovo altri childList.Items.Remove(pid); - childFormList.Remove(currSelection); } } } @@ -226,14 +219,15 @@ namespace IOB_MAN { int pid = 0; List proc2rem = new List(); + List item2rem = new List(); bool needRem = false; - foreach (var kvp in childFormList) + + foreach (iobAdapt item in ElencoIOB.List) { // verifico se esista il processo... - int.TryParse(kvp.Key, out pid); try { - Process p = Process.GetProcessById(pid); + Process p = Process.GetProcessById(item.pID); needRem = p.HasExited; } catch @@ -242,14 +236,22 @@ namespace IOB_MAN } if (needRem) { - proc2rem.Add(pid); + proc2rem.Add(item.pID); + item2rem.Add(item); + //item.isRunning = false; } } + + + foreach (var item in item2rem) + { + ElencoIOB.Remove(item); + } + // ora procdedo alla cancellazione... foreach (var item in proc2rem) { childList.Items.Remove(item); - childFormList.Remove(item.ToString()); } } @@ -265,22 +267,21 @@ namespace IOB_MAN private void closeAllChild() { - int pid = 0; - // ultimo controllo e chiusura... - foreach (var kvp in childFormList) - { - // verifico se esista il processo... - int.TryParse(kvp.Key, out pid); - try - { - Process p = Process.GetProcessById(pid); - p.CloseMainWindow(); - //childList.Items.Remove(pid); - //childFormList.Remove(pid.ToString()); - } - catch - { } + List item2rem = new List(); + + foreach (iobAdapt item in ElencoIOB.List) + { + item2rem.Add(item); } + + + foreach (var item in item2rem) + { + Process p = Process.GetProcessById(item.pID); + p.CloseMainWindow(); + ElencoIOB.Remove(item); + } + } private void dgvManagedItems_SelectionChanged(object sender, EventArgs e)