using LibreHardwareMonitor.Hardware; namespace HardwareMonitorStatusWindow.Service; public class HardwareMonitorService : IHardwareMonitorService { public const string ScheduledTaskName = "HardwareMonitorService"; public const string PipeName = "HardwareMonitorService"; private static readonly Computer Computer; private static readonly HardwareUpdateVisitor HardwareUpdateVisitor; static HardwareMonitorService() { Computer = new Computer { IsCpuEnabled = true, IsGpuEnabled = true, IsMemoryEnabled = true, IsMotherboardEnabled = true, IsControllerEnabled = true, IsNetworkEnabled = true, IsStorageEnabled = true, IsBatteryEnabled = true, IsPsuEnabled = true }; Computer.Open(); HardwareUpdateVisitor = new HardwareUpdateVisitor(); } public IEnumerable GetHardware() { Computer.Accept(HardwareUpdateVisitor); var hardwareEntries = Computer.Hardware.Select(Hardware.Create); return hardwareEntries; } }