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

时间:2011-01-04 06:13:55

标签: c#

我正在使用process.Total processortime来获取该特定进程的处理器时间。但大多数时候我得到一个值'0'我可以解决它,是否有任何其他方法来获得一个过程的处理时间

2 个答案:

答案 0 :(得分:0)

根据http://msdn.microsoft.com/en-us/library/system.diagnostics.process.totalprocessortime.aspx此值是UserProcessorTime和PrivilegedProcessorTime的总和,其中前者是TimeSpan,表示关联进程在进程的应用程序部分内运行代码所花费的时间(不在操作系统核心内部而后者是TimeSpan,它指示进程在操作系统核心内运行代码所花费的时间。

话虽如此,您的流程有何作为?如果它正在运行一个刚刚坐下来等待某个事件的线程,那么我认为你不会得到一个与0大不相同的数字。但是如果它实际上正在处理某些事情并且你仍然得到0那么问题可能是,你怎么样获取流程实例?

答案 1 :(得分:0)

如果要计算过程的处理器时间百分比,则需要2个读数。 TotalProcessorTimeTaken就是读取时间(DateTime.Now)。使用以下公式:

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