Add project files.

This commit is contained in:
Junior 2023-05-12 17:19:21 -03:00
commit 5d3b4542bf
120 changed files with 36258 additions and 0 deletions

View file

@ -0,0 +1,40 @@
namespace RHLauncher.RHLauncher
{
public class ProgressThrottler : IProgress<ProgressReport>
{
private readonly IProgress<ProgressReport> _progress;
private readonly int _intervalMs;
private readonly TaskScheduler _scheduler;
private readonly object _lock = new();
private bool _isScheduled = false;
private ProgressReport? _latestReport;
public ProgressThrottler(IProgress<ProgressReport> progress, int intervalMs)
{
_progress = progress;
_intervalMs = intervalMs;
_scheduler = TaskScheduler.FromCurrentSynchronizationContext();
}
public void Report(ProgressReport value)
{
lock (_lock)
{
_latestReport = value;
if (!_isScheduled)
{
_isScheduled = true;
Task.Delay(_intervalMs, _latestReport.CancellationToken).ContinueWith(_ =>
{
lock (_lock)
{
_progress.Report(_latestReport);
_isScheduled = false;
}
}, _latestReport.CancellationToken, TaskContinuationOptions.ExecuteSynchronously, _scheduler);
}
}
}
}
}