time service contains bug, it cannot stop after edge

This commit is contained in:
Youmu Liu
2025-12-08 18:02:09 +08:00
parent 588fa867af
commit f960982bd3
17 changed files with 313 additions and 188 deletions
@@ -86,11 +86,7 @@ namespace StgSharp.Timing
public void Dispose()
{
// mark provider as ended so external users can observe terminal state
try
{
Volatile.Write(ref _endedFlag, 1);
}
catch { }
Volatile.Write(ref _endedFlag, 1);
s_unusedID.Push(TokenID);
_event.Dispose();
GC.SuppressFinalize(this);
@@ -211,6 +207,7 @@ namespace StgSharp.Timing
{
// mark ended due to sequence timeout, then dispose
Volatile.Write(ref _endedFlag, 1);
Console.WriteLine("Time span ended.");
Dispose();
return false;
}
@@ -238,9 +235,6 @@ namespace StgSharp.Timing
return true;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal void Refresh() => _refreshHandler?.Invoke(this, EventArgs.Empty); // Legacy compatibility.
~TimeSpanProvider() => Dispose();
}