Fix nullability warnings and improve process selection logic in CPU usage retrieval
This commit is contained in:
@@ -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
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user