gì bạn muốn để có được sử dụng CPU tức thời của nó (loại) ...
Trên thực tế, việc sử dụng CPU ngay lập tức cho một quá trình không tồn tại. Thay vào đó bạn phải thực hiện hai phép đo và tính toán việc sử dụng CPU trung bình, công thức khá đơn giản:
AvgCpuUsed = [TotalCPUTime (quy trình, time2) - TotalCPUTime (quy trình, time1)]/[time2-time1]
chênh lệch Time2 và Time1 thấp hơn, số đo của bạn càng "nhanh". Windows Task Manager tính toán việc sử dụng CPU với một khoảng thời gian một giây. Tôi đã tìm thấy đó là quá đủ và bạn thậm chí có thể xem xét làm việc đó trong khoảng thời gian 5 giây gây ra hành động đo chính nó chiếm các chu kỳ CPU ...
Vì vậy, trước hết, để có được thời gian CPU trung bình
using System.Diagnostics;
float GetAverageCPULoad(int procID, DateTme from, DateTime, to)
{
// For the current process
//Process proc = Process.GetCurrentProcess();
// Or for any other process given its id
Process proc = Process.GetProcessById(procID);
System.TimeSpan lifeInterval = (to - from);
// Get the CPU use
float CPULoad = (proc.TotalProcessorTime.TotalMilliseconds/lifeInterval.TotalMilliseconds) * 100;
// You need to take the number of present cores into account
return CPULoad/System.Environment.ProcessorCount;
}
bây giờ, cho "ăn liền" CPU load bạn sẽ cần một lớp học chuyên ngành:
class ProcLoad
{
// Last time you checked for a process
public Dictionary<int, DateTime> lastCheckedDict = new Dictionary<int, DateTime>();
public float GetCPULoad(int procID)
{
if (lastCheckedDict.ContainsKey(procID))
{
DateTime last = lastCheckedDict[procID];
lastCheckedDict[procID] = DateTime.Now;
return GetAverageCPULoad(procID, last, lastCheckedDict[procID]);
}
else
{
lastCheckedDict.Add(procID, DateTime.Now);
return 0;
}
}
}
Bạn nên gọi lớp đó từ bộ hẹn giờ (hoặc bất kỳ phương pháp khoảng thời gian nào bạn muốn) cho mỗi quá trình bạn muốn theo dõi, nếu bạn muốn tất cả các quy trình chỉ sử dụng phương pháp tĩnh Process.GetProcesses static
đây có phải là một câu hỏi về cách sử dụng các gói Samurize? Có lẽ bạn có thể thuật lại câu hỏi lập trình? –