c#在net6根据进程id获取每秒钟这个进程的内存使用率
时间: 2024-02-03 22:14:08 浏览: 130
在C#中,可以使用System.Diagnostics命名空间中的Process类来获取进程相关信息。可以通过指定进程ID创建一个Process对象,并使用Process对象的WorkingSet64属性来获取进程当前占用的内存(单位为字节)。使用一个定时器来每秒钟获取一次内存占用情况,然后计算出内存使用率。
以下是示例代码:
```csharp
using System;
using System.Diagnostics;
class Program
{
static void Main(string[] args)
{
int processId = 12345; // 进程ID
// 创建 Process 对象
Process process = Process.GetProcessById(processId);
// 每秒钟获取一次内存占用情况
var timer = new System.Timers.Timer(1000);
timer.Elapsed += (sender, eventArgs) =>
{
// 获取当前进程占用的内存(单位为字节)
long memoryBytes = process.WorkingSet64;
// 获取系统可用内存大小(单位为字节)
long availableMemoryBytes = new Microsoft.VisualBasic.Devices.ComputerInfo().AvailablePhysicalMemory;
// 计算内存使用率
double memoryUsage = (double)memoryBytes / availableMemoryBytes * 100;
Console.WriteLine($"Memory usage of process {processId}: {memoryUsage:F2}%");
};
timer.AutoReset = true;
timer.Start();
Console.ReadLine();
}
}
```
注意,在上面的代码中,我们还获取了系统可用内存大小来计算内存使用率。这里使用了Microsoft.VisualBasic.Devices命名空间中的ComputerInfo类来获取可用内存大小。
阅读全文