C# 如何使用process.Totalprocessortime获取特定进程的进程时间

C# 如何使用process.Totalprocessortime获取特定进程的进程时间,c#,C#,我正在使用process.Total processortime获取特定进程的处理器时间。但大多数情况下,我都会得到一个值“0”。我该如何解决它呢?是否还有其他方法可以得到进程的进程时间?根据这个值,UserProcessorTime和PrivilegedProcessorTime之和,其中,前者是一个时间跨度,指示关联进程在进程的应用程序部分(而不是在操作系统内核内)内运行代码所花费的时间量,后者是一个时间跨度,指示进程在操作系统内核内运行代码所花费的时间量 话虽如此,您的流程是做什么的?如果

我正在使用process.Total processortime获取特定进程的处理器时间。但大多数情况下,我都会得到一个值“0”。我该如何解决它呢?是否还有其他方法可以得到进程的进程时间?根据这个值,UserProcessorTime和PrivilegedProcessorTime之和,其中,前者是一个时间跨度,指示关联进程在进程的应用程序部分(而不是在操作系统内核内)内运行代码所花费的时间量,后者是一个时间跨度,指示进程在操作系统内核内运行代码所花费的时间量


话虽如此,您的流程是做什么的?如果它运行的线程只是静坐等待某个事件,那么我认为您不会得到与0有很大不同的数字。但是如果它确实在处理某些东西,而你仍然得到0,那么问题可能是,你如何获得进程实例?

如果你要计算进程的%处理器时间,你需要2个读数。TotalProcessorTimeTaken只是读取的时间(DateTime.Now)。使用以下公式:

double res = (((p.TotalProcessorTime - prev.TotalProcessorTime).TotalMilliseconds /
 (p.TotalProcessorTimeTaken - prev.TotalProcessorTimeTaken).TotalMilliseconds) * 100) /
                        taskManagerResponse.ProcessorCount;

我不能说我经历过这种情况,但也许这是一个“重置”计数器(当你读到它时,它重置为0)。