好的,我正在使用ThreadPool来启动线程。在线程代码内部,我试图找出它实际使用的 cpu 时间。我读过有 ProcessThread 。 TotalProcessorTime 属性(http://msdn.microsoft.com/en-us/library/system.diagnostics.processthread.totalprocessortime.aspx),但我无法阅读它。那么如何为当前线程获取它呢?
几点:
ProcessThread.TotalProcessorTime
获取正确的进程线程,您需要知道本机线程 ID。
听起来很像您正在将托管线程 ID(通过
Thread.CurrentThread.Name
)与本机线程 ID 进行比较,以通过 System.Diagnostics
命名空间获取当前线程。请记住,托管线程 ID != ProcessThreadID。您需要使用 GetCurrentThreadId
功能
线程池线程可以回收,因此线程池的 TotalProcessorTime 可能会比您预期的要大
如果您要分析线程使用情况,那么使用 Visual Studio Ultimate 中的线程分析器或其他优秀的分析器(例如 ANTS、DotTrace、SciTech 等)可能会更容易