Fix procedura chiusura

This commit is contained in:
Samuele E. Locatelli
2019-12-21 09:37:25 +01:00
parent 3f63fab688
commit 84e00a7a4b
2 changed files with 69 additions and 9 deletions
+20 -7
View File
@@ -33,12 +33,13 @@
this.btnClose = new System.Windows.Forms.Button();
this.childList = new System.Windows.Forms.ListBox();
this.MainTimer = new System.Windows.Forms.Timer(this.components);
this.lblNumChild = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// btnOpen
//
this.btnOpen.Location = new System.Drawing.Point(18, 60);
this.btnOpen.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.btnOpen.Margin = new System.Windows.Forms.Padding(2);
this.btnOpen.Name = "btnOpen";
this.btnOpen.Size = new System.Drawing.Size(56, 27);
this.btnOpen.TabIndex = 1;
@@ -49,7 +50,7 @@
// btnClose
//
this.btnClose.Location = new System.Drawing.Point(114, 60);
this.btnClose.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.btnClose.Margin = new System.Windows.Forms.Padding(2);
this.btnClose.Name = "btnClose";
this.btnClose.Size = new System.Drawing.Size(56, 27);
this.btnClose.TabIndex = 70;
@@ -60,30 +61,41 @@
// childList
//
this.childList.FormattingEnabled = true;
this.childList.Location = new System.Drawing.Point(196, 60);
this.childList.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.childList.Location = new System.Drawing.Point(223, 60);
this.childList.Margin = new System.Windows.Forms.Padding(2);
this.childList.Name = "childList";
this.childList.Size = new System.Drawing.Size(166, 69);
this.childList.Size = new System.Drawing.Size(166, 264);
this.childList.TabIndex = 71;
//
// MainTimer
//
this.MainTimer.Tick += new System.EventHandler(this.MainTimer_Tick);
//
// lblNumChild
//
this.lblNumChild.AutoSize = true;
this.lblNumChild.Location = new System.Drawing.Point(18, 119);
this.lblNumChild.Name = "lblNumChild";
this.lblNumChild.Size = new System.Drawing.Size(16, 13);
this.lblNumChild.TabIndex = 73;
this.lblNumChild.Text = "...";
//
// IOBManPanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(745, 596);
this.Controls.Add(this.lblNumChild);
this.Controls.Add(this.childList);
this.Controls.Add(this.btnClose);
this.Controls.Add(this.btnOpen);
this.IsMdiContainer = true;
this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.Margin = new System.Windows.Forms.Padding(2);
this.Name = "IOBManPanel";
this.Text = "IOB MANAGER";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.IOBManPanel_FormClosing);
this.ResumeLayout(false);
this.PerformLayout();
}
@@ -92,6 +104,7 @@
private System.Windows.Forms.Button btnClose;
private System.Windows.Forms.ListBox childList;
private System.Windows.Forms.Timer MainTimer;
}
private System.Windows.Forms.Label lblNumChild;
}
}
+49 -2
View File
@@ -12,6 +12,10 @@ namespace IOB_MAN
/// Elenco dei processi
/// </summary>
protected Dictionary<string, iobAdapt> childFormList;
/// <summary>
/// Lista di IOB gestiti
/// </summary>
public List<iobAdapt> ElencoIOB = new List<iobAdapt>();
public IOBManPanel()
{
@@ -25,6 +29,11 @@ namespace IOB_MAN
MainTimer.Start();
}
private void updateStatus()
{
// aggiorno labels
lblNumChild.Text = $"Avviati {childFormList.Count} / {childList.Items.Count} processi child";
}
/// <summary>
/// apro eseguibile dump
/// </summary>
@@ -33,8 +42,10 @@ namespace IOB_MAN
private void btnOpen_Click(object sender, EventArgs e)
{
apriChild();
updateStatus();
}
private void apriChild()
{
string path = Application.StartupPath;
@@ -70,15 +81,51 @@ namespace IOB_MAN
private void btnClose_Click(object sender, EventArgs e)
{
chiudiChild();
updateStatus();
}
private void chiudiChild()
{
int pid = -1;
string currSelection = "";
// recupero elenco processi (se almeno 1)
if (childFormList.Count > 0)
{
KeyValuePair<string, iobAdapt> kvp = childFormList.First();
int pid = kvp.Value.pID;
// se ce ne fosse uno selezionato uso quello...
try
{
currSelection = childList.SelectedItem.ToString();
if (currSelection != null)
{
pid = childFormList[currSelection].pID;
}
else
{
pid = kvp.Value.pID;
}
}
catch
{
pid = kvp.Value.pID;
}
}
else
{
try
{
currSelection = childList.SelectedItem.ToString();
if (currSelection != null)
{
pid = childFormList[currSelection].pID;
}
}
catch
{ }
}
if (pid >= 0)
{
// provo a vedere SE ci sia il processo e di conseguenza lo chiudo...
try
{
@@ -91,7 +138,7 @@ namespace IOB_MAN
// errore era già chiuso..
}
childList.Items.Remove(pid);
childFormList.Remove(kvp.Key);
childFormList.Remove(currSelection);
}
#if false
// Get the current process.