小编Ant*_*ony的帖子

C# 系统 CPU 使用率和与 Windows 任务管理器同步

这是一个由两部分组成的问题,我想在堆栈上发布我的代码以帮助其他人完成相同的任务。

问题 1:

我有一个代码子集,我相信它可以根据测量间隔正确测量 CPU 使用率(跨系统中尽可能多的内核,根据检索的次数)——我在线程调用中使用了 1 秒。

我不得不从网络上的极少数文章和 C++ 代码中解读这一点。我的问题是,对于问题 1,我所做的是否正确?

有时返回的值是一个负数,这就是我乘以 -1 的原因。同样,我假设,因为文档很少,这就是我应该做的。

我有以下代码:

public static class Processor
{
    [DllImport("kernel32.dll", SetLastError = true)]
    static extern bool GetSystemTimes(out ComTypes.FILETIME lpIdleTime, out ComTypes.FILETIME lpKernelTime, out ComTypes.FILETIME lpUserTime);

    private static TimeSpan _sysIdleOldTs;
    private static TimeSpan _sysKernelOldTs;
    private static TimeSpan _sysUserOldTs;

    static Processor()
    {
    }

    public static void Test()
    {
        ComTypes.FILETIME sysIdle, sysKernel, sysUser;

        if(GetSystemTimes(out sysIdle, out sysKernel, out sysUser))
        {
            TimeSpan sysIdleTs = GetTimeSpanFromFileTime(sysIdle);
            TimeSpan sysKernelTs = GetTimeSpanFromFileTime(sysKernel);
            TimeSpan sysUserTs …
Run Code Online (Sandbox Code Playgroud)

c# windows multithreading cpu-usage

5
推荐指数
1
解决办法
3632
查看次数

标签 统计

c# ×1

cpu-usage ×1

multithreading ×1

windows ×1