Abbozzato gestione restart
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
<appSettings>
|
||||
<add key="checkPeriod" value="20" />
|
||||
<add key="chekMult" value="25"/>
|
||||
<add key="watchDogMult" value="1000"/>
|
||||
<!--<add key="targetExe" value="C:\tmp\IOB-WIN\IOB-WIN.exe" />
|
||||
<add key="ArgsList" value="SIMUL_01,SIMUL_02" />-->
|
||||
<!--<add key="ArgsList" value="SIMUL_01,SIMUL_02,SIMUL_03,SIMUL_04" />-->
|
||||
|
||||
+82
-10
@@ -22,7 +22,14 @@ namespace IOB_MAN
|
||||
|
||||
#endregion
|
||||
|
||||
protected int countCheck = utils.CRI("chekMult");
|
||||
/// <summary>
|
||||
/// Counter per verifica watchdog dei processi da riattivare...
|
||||
/// </summary>
|
||||
protected int watchDogMult = utils.CRI("watchDogMult");
|
||||
/// <summary>
|
||||
/// Counter per verifica processi (ogni volta ceh va a zero faccio vero check)
|
||||
/// </summary>
|
||||
protected int chekMult = utils.CRI("chekMult");
|
||||
/// <summary>
|
||||
/// Elenco ARGS (uno per child da avviare)
|
||||
/// </summary>
|
||||
@@ -224,18 +231,81 @@ namespace IOB_MAN
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua tutte le verifiche periodiche...
|
||||
/// Effettua tutte le verifiche periodiche a timer...
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void MainTimer_Tick(object sender, EventArgs e)
|
||||
{
|
||||
updateProgBar();
|
||||
countCheck--;
|
||||
if (countCheck < 0)
|
||||
chekProcessStatus();
|
||||
checkWatchdog();
|
||||
}
|
||||
/// <summary>
|
||||
/// Controllo periodico dei processi DA RIATTIVARE
|
||||
/// </summary>
|
||||
private void checkWatchdog()
|
||||
{
|
||||
watchDogMult--;
|
||||
if (watchDogMult < 0)
|
||||
{
|
||||
countCheck = utils.CRI("chekMult");
|
||||
// se scaduto timer...
|
||||
watchDogMult = utils.CRI("watchDogMult");
|
||||
// verifico se ci siano processi (da ARGS LIST) NON running --> li riavvio!
|
||||
List<iobAdapt> proc2restart = new List<iobAdapt>();
|
||||
foreach (iobAdapt item in ElencoIOB.List)
|
||||
{
|
||||
if (!item.isRunning)
|
||||
{
|
||||
// segno da eliminare e riavviare
|
||||
proc2restart.Add(item);
|
||||
}
|
||||
}
|
||||
// se ho da riavviare... elimino!
|
||||
foreach (var item in proc2restart)
|
||||
{
|
||||
ElencoIOB.Remove(item);
|
||||
utils.lgInfo($"Chiusura processo non running | IOB: {item.CodIOB} | pid: {item.pID}");
|
||||
}
|
||||
// aggiorno datagrid!
|
||||
dgvManagedItems.Invalidate();
|
||||
ProcessStartInfo psi = null;
|
||||
// li faccio ripartire!
|
||||
foreach (var item in proc2restart)
|
||||
{
|
||||
// da testare x aprire chiudere risorsa...
|
||||
psi = new ProcessStartInfo
|
||||
{
|
||||
FileName = TargetExe,
|
||||
Arguments = item.CodIOB,
|
||||
WindowStyle = ProcessWindowStyle.Minimized
|
||||
};
|
||||
|
||||
//childProc.StartInfo = psi;
|
||||
Process p = Process.Start(psi);
|
||||
// accodo nuovo IOB...
|
||||
iobAdapt newIob = new iobAdapt();
|
||||
DateTime adesso = DateTime.Now;
|
||||
newIob.CodIOB = item.CodIOB;
|
||||
newIob.startTime = adesso;
|
||||
newIob.pID = p.Id;
|
||||
newIob.isRunning = true;
|
||||
// aggiungo a datasource
|
||||
ElencoIOB.Add(newIob);
|
||||
utils.lgInfo($"Riavvio processo | IOB: {newIob.CodIOB} | pid: {newIob.pID}");
|
||||
}
|
||||
// aggiorno datagrid!
|
||||
dgvManagedItems.Invalidate();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Controllo periodico dei processi attivi
|
||||
/// </summary>
|
||||
private void chekProcessStatus()
|
||||
{
|
||||
chekMult--;
|
||||
if (chekMult < 0)
|
||||
{
|
||||
chekMult = utils.CRI("chekMult");
|
||||
checkRunningchild();
|
||||
showUpdate();
|
||||
}
|
||||
@@ -255,8 +325,6 @@ namespace IOB_MAN
|
||||
/// </summary>
|
||||
private void checkRunningchild()
|
||||
{
|
||||
int pid = 0;
|
||||
List<int> proc2rem = new List<int>();
|
||||
List<iobAdapt> item2rem = new List<iobAdapt>();
|
||||
bool needRem = false;
|
||||
|
||||
@@ -277,15 +345,19 @@ namespace IOB_MAN
|
||||
}
|
||||
if (needRem)
|
||||
{
|
||||
proc2rem.Add(item.pID);
|
||||
item2rem.Add(item);
|
||||
item.isRunning = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
item.isRunning = true;
|
||||
}
|
||||
}
|
||||
|
||||
// ora procdedo alla cancellazione...
|
||||
foreach (var item in item2rem)
|
||||
{
|
||||
ElencoIOB.Remove(item);
|
||||
//ElencoIOB.Remove(item);
|
||||
}
|
||||
// aggiorno datagrid!
|
||||
dgvManagedItems.Invalidate();
|
||||
|
||||
Reference in New Issue
Block a user