private void blinker_DoWork(object sender, DoWorkEventArgs e)
{
string statusBack = _curStatus;
while (true)
{
// 'Sleep' for ~2000ms, but cancel faster
for (int i = 0; i < 20; i++)
{
if (blinker.CancellationPending)
break;
Thread.Sleep(100);
}
if (blinker.CancellationPending)
break;
// 'Sleep' for ~4000ms, but also update & cancel faster
for (int i = 0; i < 40; i++)
{
float percent = (int)((float)_progress / _progressMax * 100);
SetStatus(percent + "%");
Thread.Sleep(100);
if (blinker.CancellationPending)
break;
}
if (blinker.CancellationPending)
break;
SetStatus(statusBack);
}
SetStatus(statusBack);
e.Cancel = true;
}
}