Fix nullability warnings and improve process selection logic in CPU usage retrieval

This commit is contained in:
2025-08-06 01:27:54 +08:00
parent 294438145a
commit f8bbd1199d
+18 -18
View File
@@ -126,7 +126,7 @@ namespace ResourceMonitorService
var requestBody = await new StreamReader(context.Request.Body).ReadToEndAsync(); var requestBody = await new StreamReader(context.Request.Body).ReadToEndAsync();
var parameters = JsonConvert.DeserializeObject<dynamic>(requestBody); var parameters = JsonConvert.DeserializeObject<dynamic>(requestBody);
string action = parameters?.Action?.ToString()?.ToLower(); // "shutdown" or "restart" string? action = parameters?.Action?.ToString()?.ToLower(); // "shutdown" or "restart"
int delaySeconds = parameters?.DelaySeconds ?? 0; int delaySeconds = parameters?.DelaySeconds ?? 0;
// Validate action input // Validate action input
@@ -248,32 +248,32 @@ namespace ResourceMonitorService
} }
}) })
.Where(p => p != null) .Where(p => p != null)
.OrderByDescending(p => p.TotalProcessorTime) .OrderByDescending(p => p!.TotalProcessorTime)
.Select(p => p.Process) .Select(p => p!.Process)
.ToList(); .ToList();
// Create a new anonymous type containing the CPU usage, RAM usage, and the top 3 highest CPU-using processes // Create a new anonymous type containing the CPU usage, RAM usage, and the top 3 highest CPU-using processes
return new return new
{ {
Usage = usage, Usage = usage,
Process1 = new Process1 = processes.Count > 0 ? new
{ {
Name = processes.ElementAt(0).ProcessName, Name = processes[0].ProcessName,
TotalProcessorTime = processes.ElementAt(0).TotalProcessorTime, TotalProcessorTime = processes[0].TotalProcessorTime,
WorkingSet64 = processes.ElementAt(0).WorkingSet64 / (1024 * 1024) // Convert to MB WorkingSet64 = processes[0].WorkingSet64 / (1024 * 1024) // Convert to MB
}, } : null,
Process2 = new Process2 = processes.Count > 1 ? new
{ {
Name = processes.ElementAt(1).ProcessName, Name = processes[1].ProcessName,
TotalProcessorTime = processes.ElementAt(1).TotalProcessorTime, TotalProcessorTime = processes[1].TotalProcessorTime,
WorkingSet64 = processes.ElementAt(1).WorkingSet64 / (1024 * 1024) // Convert to MB WorkingSet64 = processes[1].WorkingSet64 / (1024 * 1024) // Convert to MB
}, } : null,
Process3 = new Process3 = processes.Count > 2 ? new
{ {
Name = processes.ElementAt(2).ProcessName, Name = processes[2].ProcessName,
TotalProcessorTime = processes.ElementAt(2).TotalProcessorTime, TotalProcessorTime = processes[2].TotalProcessorTime,
WorkingSet64 = processes.ElementAt(2).WorkingSet64 / (1024 * 1024) // Convert to MB WorkingSet64 = processes[2].WorkingSet64 / (1024 * 1024) // Convert to MB
} } : null
}; };
} }