Completato fix check processi + chiusura in blocco

This commit is contained in:
Samuele E. Locatelli
2019-12-21 10:39:48 +01:00
parent 271ed4390d
commit 20db8feb6e
+29 -28
View File
@@ -7,10 +7,6 @@ namespace IOB_MAN
{
public partial class IOBManPanel : Form
{
/// <summary>
/// Elenco dei processi
/// </summary>
protected Dictionary<string, iobAdapt> childFormList;
/// <summary>
/// Binding source degli elementi gestiti..
/// </summary>
@@ -24,7 +20,6 @@ namespace IOB_MAN
private void myInit()
{
childFormList = new Dictionary<string, iobAdapt>();
// 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
}
/// <summary>
@@ -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<int> proc2rem = new List<int>();
List<iobAdapt> item2rem = new List<iobAdapt>();
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<iobAdapt> item2rem = new List<iobAdapt>();
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)