Пример #1
0
        /// <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);
        }
Пример #2
0
 /// <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;
 }