/// <summary> /// Initializes a new instance of the <see cref="CpuMonitor" /> class. /// </summary> /// <param name="logger">The logger.</param> /// <param name="unitOfWork">The unit of work.</param> /// <param name="cpuStatusRepository">The CPU status repository.</param> public CpuMonitor(ILogger <CpuMonitor> logger, IUnitOfWork unitOfWork, ICpuStatusRepository cpuStatusRepository) { wmicProcess = new Process(); wmicProcess.StartInfo.UseShellExecute = false; wmicProcess.StartInfo.RedirectStandardOutput = true; wmicProcess.StartInfo.CreateNoWindow = true; wmicProcess.StartInfo.FileName = "wmic.exe"; wmicProcess.StartInfo.Arguments = "cpu get loadpercentage"; this.pcName = Environment.MachineName; this.cancellationTokenSource = new CancellationTokenSource(); var cancellationToken = cancellationTokenSource.Token; this.monitor = Task.Run(() => { while (!cancellationToken.IsCancellationRequested) { try { cpuStatusRepository.Insert(new CpuStatus { PcName = this.pcName, Usage = GetAverageCpuUsage(), TimeStamp = DateTime.UtcNow }).Wait(); unitOfWork.Save().Wait(); } catch (Exception ex) { logger.LogError(ex, ex.Message); } Thread.Sleep(300000); } }, cancellationToken); }
/// <summary> /// Initializes a new instance of the <see cref="CpuController"/> class. /// </summary> /// <param name="configuration">The configuration.</param> /// <param name="cpuStatusRepository">The cpu status repository.</param> public CpuController(IOptions <ApiConfiguration> configuration, ICpuStatusRepository cpuStatusRepository) { this.configuration = configuration.Value; this.cpuStatusRepository = cpuStatusRepository; }