示例#1
0
        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));
        }