c# - 如何获取当前线程的ProcessThread.TotalProcessorTime

标签 c# .net threadpool

好的,我正在使用ThreadPool来启动线程。在线程代码内部,我试图找出它实际使用的 cpu 时间。我读过有 ProcessThread 。 TotalProcessorTime 属性(http://msdn.microsoft.com/en-us/library/system.diagnostics.processthread.totalprocessortime.aspx),但我无法阅读它。那么如何获取当前线程的它呢?

最佳答案

几点:

1)通过 ProcessThread 获取正确的进程线程。 TotalProcessorTime 您需要 native 线程 ID

2)听起来很像您正在将托管线程 ID(通过 Thread.CurrentThread.Name)与 native 线程 ID 进行比较,以通过 System.Diagnostics 命名空间获取当前线程。请记住,托管线程 ID != ProcessThreadID。您需要使用 GetCurrentThreadId 函数 http://msdn.microsoft.com/en-us/library/ms683183(VS.85).aspx

3) 线程池线程可以回收,因此线程池的 TotalProcessorTime 可能会比您预期的要大

4)如果您分析线程使用情况,使用 Visual Studio Ultimate 中的线程分析器或其他优秀的分析器(即 ANTS、DotTrace、SciTech)可能会更容易

关于c# - 如何获取当前线程的ProcessThread.TotalProcessorTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4785256/

相关文章:

c# - 为什么我的 http 请求响应不能解析成一个整数?

c# - 为什么创建 string.IsNullOrEmpty()?

c# - WinForms anchor 控件更改位置来源?

c# - 使用 char** 参数的 PInvoke 中出现问题,字符串数组不起作用

c# - 您将功能文档放在哪里以便它显示在智能感知上?

c++ - 如何使用模板化成员函数提交线程池(需要修改函数内部的成员)

C# 如何计算我的 AppDomain 中的托管线程?

c# - 通用 Windows 应用程序中的全局热键

java - 我如何利用集群环境的强大功能来处理 I/O 绑定(bind)作业的线程池?

c# - 最快/最安全的文件查找/解析?