diff --git a/RGB.NET.Core/Helper/TimerHelper.cs b/RGB.NET.Core/Helper/TimerHelper.cs
index 6e54cc5..6c33284 100644
--- a/RGB.NET.Core/Helper/TimerHelper.cs
+++ b/RGB.NET.Core/Helper/TimerHelper.cs
@@ -28,7 +28,6 @@ public static class TimerHelper
private static readonly object HIGH_RESOLUTION_TIMER_LOCK = new();
private static bool _areHighResolutionTimersEnabled = false;
- private static int _highResolutionTimerUsers = 0;
private static bool _useHighResolutionTimers = true;
///
@@ -93,20 +92,19 @@ public static class TimerHelper
/// A disposable to remove the request.
public static IDisposable RequestHighResolutionTimer()
{
+ HighResolutionTimerDisposable timerLease = new();
lock (HIGH_RESOLUTION_TIMER_LOCK)
{
- _highResolutionTimerUsers++;
+ _timerLeases.Add(timerLease);
CheckHighResolutionTimerUsage();
}
- HighResolutionTimerDisposable timerLease = new();
- _timerLeases.Add(timerLease);
return timerLease;
}
private static void CheckHighResolutionTimerUsage()
{
- if (UseHighResolutionTimers && (_highResolutionTimerUsers > 0))
+ if (UseHighResolutionTimers && (_timerLeases.Count > 0))
EnableHighResolutionTimers();
else
DisableHighResolutionTimers();
@@ -146,7 +144,7 @@ public static class TimerHelper
///
public static void DisposeAllHighResolutionTimerRequests()
{
- List timerLeases = _timerLeases.ToList();
+ List timerLeases = new(_timerLeases);
foreach (HighResolutionTimerDisposable timer in timerLeases)
timer.Dispose();
}
@@ -172,7 +170,6 @@ public static class TimerHelper
lock (HIGH_RESOLUTION_TIMER_LOCK)
{
_timerLeases.Remove(this);
- _highResolutionTimerUsers--;
CheckHighResolutionTimerUsage();
}
}