/// <summary> /// Отправить информацию о перегрузке /// </summary> /// <param name="value"></param> public static void SendOverloadInfo(float value) { var message = new CpuMessage { DateTime = DateTime.Now.ToString("hh:mm:ss"), Usage = value }; Send(JsonConvert.SerializeObject(message)); }
/// <summary> /// Collects cpu usage stats and forwards to the <see cref="CollectMessage.Receivers"/> /// </summary> /// <param name="message"><see cref="CollectMessage"/></param> private void CollectStats(CollectMessage message) { _output.Tell(new SimpleMessage($"CpuCollectionActor received collect dated {message.CollectUtc:dd/MM/yyyy HH:mm:ss}")); var processorSearcher = new ManagementObjectSearcher(@"root\CIMV2", "SELECT * FROM Win32_PerfFormattedData_Counters_ProcessorInformation"); var obj = processorSearcher.Get().Cast <ManagementObject>().FirstOrDefault(); if (obj != null) { var percent = double.Parse(obj["PercentProcessorTime"].ToString()); var msg = new CpuMessage(percent / 100); foreach (var r in message.Receivers) { r.Tell(msg); } } }