4 Commits

3 changed files with 32 additions and 25 deletions
+10 -6
View File
@@ -99,9 +99,13 @@ This file provides a C# wrapper for the NVIDIA Management Library (NVML) functio
Feel free to contribute by opening issues or submitting pull requests. Make sure to follow the project's coding style and best practices.
# devnote
dotnet run
git add .
git commit -m "Add steam running games"
git push origin master
dotnet publish -c Release -o ./publish
## devnote
- **Commonlly use command**:
- dotnet run
- git add .
- git commit -m "Add steam running games"
- git push origin master
- dotnet publish -c Release -o ./publish
- **Using git bash**:
- curl -X POST "http://localhost:5000/api/kill-process" -H "Content-Type: application/json" -d '3333333'
+14 -19
View File
@@ -22,6 +22,16 @@ namespace ResourceMonitorService
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
var builder = WebApplication.CreateBuilder();
/* builder.WebHost.ConfigureKestrel(options =>
{
options.ListenAnyIP(5000); // Replace 5000 with your desired port
}); */
/* builder.WebHost.ConfigureKestrel(options =>
{
var url = builder.Configuration.GetValue<string>("Kestrel:Endpoints:Http:Url");
var port = url.Split(':').Last();
options.ListenAnyIP(int.Parse(port));
}); */
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowAllOrigins",
@@ -94,7 +104,7 @@ namespace ResourceMonitorService
}
});
_ = app.RunAsync(stoppingToken);
app.RunAsync(stoppingToken);
await Task.Delay(Timeout.Infinite, stoppingToken);
}
@@ -112,17 +122,11 @@ namespace ResourceMonitorService
private object GetCpuUsage()
{
#pragma warning disable CA1416 // Validate platform compatibility
var cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total");
#pragma warning restore CA1416 // Validate platform compatibility
#pragma warning disable CA1416 // Validate platform compatibility
cpuCounter.NextValue();
#pragma warning restore CA1416 // Validate platform compatibility
Thread.Sleep(1000); // Wait a second to get a valid reading
#pragma warning disable CA1416 // Validate platform compatibility
var usage = cpuCounter.NextValue();
#pragma warning restore CA1416 // Validate platform compatibility
if (usage > 80)
{
// Get the current processes and sort them by CPU usage in descending order
@@ -134,18 +138,21 @@ namespace ResourceMonitorService
Usage = usage,
Process1 = new
{
Id = processes.ElementAt(0).Id,
Name = processes.ElementAt(0).ProcessName,
TotalProcessorTime = processes.ElementAt(0).TotalProcessorTime,
WorkingSet64 = processes.ElementAt(0).WorkingSet64 / (1024 * 1024) // Convert to MB
},
Process2 = new
{
Id = processes.ElementAt(1).Id,
Name = processes.ElementAt(1).ProcessName,
TotalProcessorTime = processes.ElementAt(1).TotalProcessorTime,
WorkingSet64 = processes.ElementAt(1).WorkingSet64 / (1024 * 1024) // Convert to MB
},
Process3 = new
{
Id = processes.ElementAt(2).Id,
Name = processes.ElementAt(2).ProcessName,
TotalProcessorTime = processes.ElementAt(2).TotalProcessorTime,
WorkingSet64 = processes.ElementAt(2).WorkingSet64 / (1024 * 1024) // Convert to MB
@@ -161,30 +168,20 @@ namespace ResourceMonitorService
private float GetRamUsage()
{
#pragma warning disable CA1416 // Validate platform compatibility
var ramCounter = new PerformanceCounter("Memory", "Available MBytes");
#pragma warning restore CA1416 // Validate platform compatibility
var totalMemory = GetTotalPhysicalMemory();
#pragma warning disable CA1416 // Validate platform compatibility
var availableMemory = ramCounter.NextValue() * 1024 * 1024;
#pragma warning restore CA1416 // Validate platform compatibility
return (float)(totalMemory - availableMemory) / totalMemory * 100;
}
private ulong GetTotalPhysicalMemory()
{
ulong totalMemory = 0;
#pragma warning disable CA1416 // Validate platform compatibility
var searcher = new ManagementObjectSearcher("SELECT TotalPhysicalMemory FROM Win32_ComputerSystem");
#pragma warning restore CA1416 // Validate platform compatibility
#pragma warning disable CA1416 // Validate platform compatibility
foreach (var obj in searcher.Get())
{
#pragma warning disable CA1416 // Validate platform compatibility
totalMemory = (ulong)obj["TotalPhysicalMemory"];
#pragma warning restore CA1416 // Validate platform compatibility
}
#pragma warning restore CA1416 // Validate platform compatibility
return totalMemory;
}
@@ -220,9 +217,7 @@ namespace ResourceMonitorService
{
try
{
#pragma warning disable CS8602 // Dereference of a possibly null reference.
var filePath = process.MainModule.FileName;
#pragma warning restore CS8602 // Dereference of a possibly null reference.
if (filePath.Contains(@"\steamapps\common\"))
{
// Extract the game directory name
+8
View File
@@ -4,5 +4,13 @@
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"RunAsWindowsService": false,
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://*:5000"
}
}
}
}