diff options
| author | Paweł Bernaciak <pawelbernaciak@zohomail.eu> | 2023-10-25 20:28:48 +0200 |
|---|---|---|
| committer | Paweł Bernaciak <pawelbernaciak@zohomail.eu> | 2023-10-25 20:34:22 +0200 |
| commit | 1912feb9cfe51deaedbe3abe9239fd1bcf2b37f8 (patch) | |
| tree | 8d7f0e448c0ba1e6e4980e8d99b136ca14391b95 /backend/Elements.Backend/Services/PeriodicService.cs | |
| parent | 2e86ace4593d32a2cb1a4be9a758911ff25e4a89 (diff) | |
Make voting work
Diffstat (limited to 'backend/Elements.Backend/Services/PeriodicService.cs')
| -rw-r--r-- | backend/Elements.Backend/Services/PeriodicService.cs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/backend/Elements.Backend/Services/PeriodicService.cs b/backend/Elements.Backend/Services/PeriodicService.cs new file mode 100644 index 0000000..48cdf2f --- /dev/null +++ b/backend/Elements.Backend/Services/PeriodicService.cs @@ -0,0 +1,38 @@ +namespace Elements.Backend.Services; + +class PeriodicService : BackgroundService +{ + private readonly TimeSpan _period = TimeSpan.FromMinutes(1); + private readonly ILogger<PeriodicService> _logger; + private readonly IServiceScopeFactory _factory; + public bool IsEnabled { get; set; } = true; + + public PeriodicService( + ILogger<PeriodicService> logger, + IServiceScopeFactory factory) + { + _logger = logger; + _factory = factory; + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + using PeriodicTimer timer = new PeriodicTimer(_period); + while ( + !stoppingToken.IsCancellationRequested && + await timer.WaitForNextTickAsync(stoppingToken)) + { + try + { + if (!IsEnabled) continue; + await using AsyncServiceScope asyncScope = _factory.CreateAsyncScope(); + FinishVoteService finishVoteService = asyncScope.ServiceProvider.GetRequiredService<FinishVoteService>(); + await finishVoteService.DoSomethingAsync(); + } + catch (Exception ex) + { + _logger.LogInformation($"Failed to execute periodic service, Error: {ex.Message}."); + } + } + } +}
\ No newline at end of file |
