private void worker_DoWork(object sender, DoWorkEventArgs e)
{
lock (_lock)
{
Program.Invoke(this, () =>
{
dataGridView1.Rows.Clear();
progressBar1.Value = 0;
labelProgress.Text = Messages.PATCHING_WIZARD_RUNNING_PRECHECKS;
});
Pool_patch patch = e.Argument as Pool_patch;
Pool_update update = e.Argument as Pool_update;
LivePatchCodesByHost = new Dictionary<string, livepatch_status>();
List<KeyValuePair<string, List<Check>>> checks = update != null ? GenerateChecks(update) : GenerateChecks(patch); //patch is expected to be null for RPU
_numberChecks = checks.Count;
for (int i = 0; i < checks.Count; i++)
{
if (_worker.CancellationPending)
{
e.Cancel = true;
return;
}
List<Check> checkGroup = checks[i].Value;
PreCheckHeaderRow headerRow =
new PreCheckHeaderRow(string.Format(Messages.PATCHING_WIZARD_PRECHECK_STATUS, checks[i].Key));
_worker.ReportProgress(5, headerRow);
PreCheckResult precheckResult = PreCheckResult.OK;
for (int j = 0; j < checkGroup.Count; j++)
{
if (_worker.CancellationPending)
{
e.Cancel = true;
return;
}
Check check = checkGroup[j];
foreach (PreCheckHostRow row in ExecuteCheck(check))
{
if (precheckResult != PreCheckResult.Failed && row.Problem != null)
precheckResult = row.PrecheckResult;
_worker.ReportProgress(PercentageSelectedServers(j + 1), row);
}
}
lock (_update_grid_lock)
{
headerRow.UpdateDescription(precheckResult);
}
}
}
}