How can I get CPU usage and/or RAM usage of a *THREAD* in C# (managed code)?

Timothy Khouri picture Timothy Khouri · Jun 1, 2009 · Viewed 11.1k times · Source

I know how to get CPU usage and memory usage for a process, but I was wondering how to get it on a per-thread level. If the best solution is to do some P-Invoking, then that's fine too.

Example of what I need:

Thread myThread = Thread.CurrentThread;

// some time later in some other function...

Console.WriteLine(GetThreadSpecificCpuUsage(myThread));

Answer

jerryjvl picture jerryjvl · Jun 1, 2009

As said, memory use cannot be answered since that is an attribute of the process as a whole, but CPU use:

Process p = Process.GetCurrentProcess(); // getting current running process of the app
foreach (ProcessThread pt in p.Threads)
{
    // use pt.Id / pt.TotalProcessorTime / pt.UserProcessorTime / pt.PrivilegedProcessorTime
}