/ PeriodicInfo.cs
PeriodicInfo.cs
 1  namespace _5uhr;
 2  
 3  public class PeriodicInfo(InfoService service) : IHostedService, IDisposable, IAsyncDisposable
 4  {
 5      // should run service.UpdateInfoAsync every 5 minutes:
 6      private Timer? _timer;
 7      public Task StartAsync(CancellationToken cancellationToken)
 8      {
 9          _timer = new Timer(_ => service.UpdateInfoAsync(), null, TimeSpan.Zero, TimeSpan.FromMinutes(5));
10          return Task.CompletedTask;
11      }
12      public Task StopAsync(CancellationToken cancellationToken)
13      {
14          _timer?.Change(Timeout.Infinite, 0);
15          return Task.CompletedTask;
16      }
17  
18      public void Dispose()
19      {
20          _timer?.Dispose();
21      }
22  
23      public async ValueTask DisposeAsync()
24      {
25          if (_timer != null) await _timer.DisposeAsync();
26      }
27  }