protected override Task ExecuteAsync(CancellationToken stoppingToken) { Initialize(); var watch = new Stopwatch(); watch.Start(); var loaded = false; return(Task.Run(async() => { while (!stoppingToken.IsCancellationRequested) { try { if (loaded && watch.Elapsed <= TimeSpan.FromSeconds(5)) { continue; } loaded = true; var cd = await CpuUtil.GetStats(); cd.Fps = _colorService.Counter.Rates; _colorService.ControlService.Stats = cd; await _hubContext.Clients.All.SendAsync("stats", cd, stoppingToken); watch.Restart(); } catch (Exception e) { if (!e.Message.Contains("canceled")) { Log.Warning("Exception during init: " + e.Message + " at " + e.StackTrace); } } } Log.Information("Stat service stopped."); return Task.CompletedTask; }, stoppingToken)); }