如何获取当前线程的 PrivilegedProcessorTime 和 UserProcessorTime

发布于 2024-09-07 02:20:08 字数 429 浏览 2 评论 0原文

我找到了几个有关如何获取进程和所有线程的 PrivilegedProcessorTime 和 UserProcessorTime 的示例,但是如何获取当前托管线程的 PrivilegedProcessorTime 和 UserProcessorTime。

private void button1_Click(object sender, EventArgs e)
{
    ThreadPool.QueueUserWorkItem(new WaitCallback(WorkCore));
}

static void WorkCore(Object stateInfo)
{
    // Code to get and do work
    // Code to get and log PrivilegedProcessorTime and UserProcessorTime
}

I found several examples of how to get the PrivilegedProcessorTime and UserProcessorTime for a process and for all threads, but how do I get the PrivilegedProcessorTime and UserProcessorTime for the current managed thread.

private void button1_Click(object sender, EventArgs e)
{
    ThreadPool.QueueUserWorkItem(new WaitCallback(WorkCore));
}

static void WorkCore(Object stateInfo)
{
    // Code to get and do work
    // Code to get and log PrivilegedProcessorTime and UserProcessorTime
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

初心未许 2024-09-14 02:20:08

我让它工作,但 AppDomain.GetCurrentThreadId 已被弃用

static void WorkCore(Object stateInfo) 
{ 
    // Code to get and do work 
    // Code to get and log PrivilegedProcessorTime and UserProcessorTime
    ProcessThreadCollection m_Threads = Process.GetCurrentProcess().Threads;
    foreach(ProcessThread t in m_Threads)
    {
       if (t.Id == AppDomain.GetCurrentThreadId())
       {
          sw.WriteLine("User Time " + t.UserProcessorTime.ToString(@"d\:hh\:mm\:ss"));
          sw.WriteLine("Kernel Time " + t.PrivilegedProcessorTime.TotalSeconds.ToString("F0") + " sec");
       }
    }
} 

I got this to work but AppDomain.GetCurrentThreadId has been deprecated

static void WorkCore(Object stateInfo) 
{ 
    // Code to get and do work 
    // Code to get and log PrivilegedProcessorTime and UserProcessorTime
    ProcessThreadCollection m_Threads = Process.GetCurrentProcess().Threads;
    foreach(ProcessThread t in m_Threads)
    {
       if (t.Id == AppDomain.GetCurrentThreadId())
       {
          sw.WriteLine("User Time " + t.UserProcessorTime.ToString(@"d\:hh\:mm\:ss"));
          sw.WriteLine("Kernel Time " + t.PrivilegedProcessorTime.TotalSeconds.ToString("F0") + " sec");
       }
    }
} 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文