public void ResetProgress(double initial, double maximumProgress)
{
MaximumProgress = maximumProgress;
Progress = initial;
_elapsedTimer = new Stopwatch();
_updateTimer = new Timer(1000);
var incrementTimer = 0;
_updateTimer.Elapsed += delegate
{
var elapsed = _elapsedTimer.Elapsed;
var estimate = new TimeSpan((long)(elapsed.Ticks / (Progress / _maximumProgress)));
EstimatedTimeLeft = estimate - elapsed;
if (incrementTimer == 10)
{
_updateTimer.Interval = 5000;
incrementTimer++;
}
else
incrementTimer++;
};
_elapsedTimer.Restart();
_updateTimer.Start();
System.Windows.Forms.Application.DoEvents();
}