1234567891011121314151617181920212223242526272829303132333435363738394041 |
- using System.Timers;
- using Microsoft.AspNetCore.SignalR;
- using Microsoft.Extensions.Configuration;
- using Result.Data;
- using Result.Hubs;
- namespace Result.Timers
- {
- public class PublishResultsTimer
- {
- private readonly IHubContext<ResultsHub> _hubContext;
- private readonly IResultData _resultData;
- private readonly Timer _timer;
- public PublishResultsTimer(IHubContext<ResultsHub> hubContext, IResultData resultData, IConfiguration configuration)
- {
- _hubContext = hubContext;
- _resultData = resultData;
- var publishMilliseconds = configuration.GetValue<int>("ResultsTimer:PublishMilliseconds");
- _timer = new Timer(publishMilliseconds)
- {
- Enabled = false
- };
- _timer.Elapsed += PublishResults;
- }
- public void Start()
- {
- if (!_timer.Enabled)
- {
- _timer.Start();
- }
- }
- private void PublishResults(object sender, ElapsedEventArgs e)
- {
- var model = _resultData.GetResults();
- _hubContext.Clients.All.SendAsync("UpdateResults", model);
- }
- }
- }
|