fix: Fixes Timer.Pause not running continuation (#1893)

This commit is contained in:
Kamron Batman 2024-08-04 15:40:54 -07:00 • committed by GitHub
parent 4d47b3849f
commit 8f39af9579
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 20 additions and 6 deletions

View file

@ -142,7 +142,7 @@ public partial class Timer
// Stop the timer from running so that way if Start() is called in OnTick, the timer will be started.
if (finished)
{
timer.Stop();
timer.InternalStop();
}
var version = timer.Version;
@ -151,11 +151,19 @@ public partial class Timer
prof?.Finish();
// If the timer has been altered (restarted, returned etc) then bail
if (finished || timer.Version != version)
if (timer.Version != version)
{
return;
}
if (finished)
{
// Already stopped and detached, now run OnDetach
timer.OnDetach();
timer.Version++;
return;
}
timer.Delay = timer.Interval;
timer.Next = DateTime.UtcNow + timer.Interval;
AddTimer(timer, (long)timer.Delay.TotalMilliseconds);

View file

@ -151,6 +151,16 @@ public partial class Timer
return;
}
InternalStop();
Detach();
OnDetach();
Version++;
}
private void InternalStop()
{
Running = false;
// We are the head on the timer ring
@ -165,15 +175,11 @@ public partial class Timer
_executingRings[_ring] = _nextTimer;
}
Detach();
OnDetach();
var prof = GetProfile();
if (prof != null)
{
prof.Stopped++;
}
Version++;
}
protected virtual void OnTick()