Files
annotations/Azaion.Common/Extensions/ThrottleExtensions.cs
T
Alex Bezdieniezhnykh 5fa18aa514 queue + local sqlite WIP
2024-12-17 18:46:33 +02:00

19 lines
562 B
C#

namespace Azaion.Common.Extensions;
public static class ThrottleExt
{
private static bool _throttleOn;
public static async Task Throttle(this Func<Task> func, TimeSpan? throttleTime = null, CancellationToken cancellationToken = default)
{
if (_throttleOn)
return;
_throttleOn = true;
await func();
_ = Task.Run(async () =>
{
await Task.Delay(throttleTime ?? TimeSpan.FromMilliseconds(500), cancellationToken);
_throttleOn = false;
}, cancellationToken);
}
}