From f8bbd1199da498982d4013e6226bb521c97289d0 Mon Sep 17 00:00:00 2001 From: Tok Mudim Date: Wed, 6 Aug 2025 01:27:54 +0800 Subject: [PATCH] Fix nullability warnings and improve process selection logic in CPU usage retrieval --- Worker.cs | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/Worker.cs b/Worker.cs index 502b5a7..1aa67f3 100644 --- a/Worker.cs +++ b/Worker.cs @@ -126,7 +126,7 @@ namespace ResourceMonitorService var requestBody = await new StreamReader(context.Request.Body).ReadToEndAsync(); var parameters = JsonConvert.DeserializeObject(requestBody); - string action = parameters?.Action?.ToString()?.ToLower(); // "shutdown" or "restart" + string? action = parameters?.Action?.ToString()?.ToLower(); // "shutdown" or "restart" int delaySeconds = parameters?.DelaySeconds ?? 0; // Validate action input @@ -248,32 +248,32 @@ namespace ResourceMonitorService } }) .Where(p => p != null) - .OrderByDescending(p => p.TotalProcessorTime) - .Select(p => p.Process) + .OrderByDescending(p => p!.TotalProcessorTime) + .Select(p => p!.Process) .ToList(); // Create a new anonymous type containing the CPU usage, RAM usage, and the top 3 highest CPU-using processes return new { Usage = usage, - Process1 = new + Process1 = processes.Count > 0 ? new { - Name = processes.ElementAt(0).ProcessName, - TotalProcessorTime = processes.ElementAt(0).TotalProcessorTime, - WorkingSet64 = processes.ElementAt(0).WorkingSet64 / (1024 * 1024) // Convert to MB - }, - Process2 = new + Name = processes[0].ProcessName, + TotalProcessorTime = processes[0].TotalProcessorTime, + WorkingSet64 = processes[0].WorkingSet64 / (1024 * 1024) // Convert to MB + } : null, + Process2 = processes.Count > 1 ? new { - Name = processes.ElementAt(1).ProcessName, - TotalProcessorTime = processes.ElementAt(1).TotalProcessorTime, - WorkingSet64 = processes.ElementAt(1).WorkingSet64 / (1024 * 1024) // Convert to MB - }, - Process3 = new + Name = processes[1].ProcessName, + TotalProcessorTime = processes[1].TotalProcessorTime, + WorkingSet64 = processes[1].WorkingSet64 / (1024 * 1024) // Convert to MB + } : null, + Process3 = processes.Count > 2 ? new { - Name = processes.ElementAt(2).ProcessName, - TotalProcessorTime = processes.ElementAt(2).TotalProcessorTime, - WorkingSet64 = processes.ElementAt(2).WorkingSet64 / (1024 * 1024) // Convert to MB - } + Name = processes[2].ProcessName, + TotalProcessorTime = processes[2].TotalProcessorTime, + WorkingSet64 = processes[2].WorkingSet64 / (1024 * 1024) // Convert to MB + } : null }; }