ProcessThread Class


Represents an operating system process thread.

Namespace:   System.Diagnostics
Assembly:  System (in System.dll)


[HostProtectionAttribute(SecurityAction.LinkDemand, SelfAffectingProcessMgmt = true, 
	SelfAffectingThreading = true)]
public class ProcessThread : Component


Gets the base priority of the thread.






Gets the current priority of the thread.






Gets the unique identifier of the thread.


Sets the preferred processor for this thread to run on.


Gets or sets a value indicating whether the operating system should temporarily boost the priority of the associated thread whenever the main window of the thread's process receives the focus.


Gets or sets the priority level of the thread.


Gets the amount of time that the thread has spent running code inside the operating system core.


Sets the processors on which the associated thread can run.






Gets the time that the operating system started the thread.


Gets the current state of this thread.


Gets the total amount of time that this thread has spent using the processor.


Gets the amount of time that the associated thread has spent running code inside the application.


Gets the reason that the thread is waiting.


























Resets the ideal processor for this thread to indicate that there is no single ideal processor. In other words, so that any processor is ideal.





Use ProcessThread to obtain information about a thread that is currently running on the system. Doing so allows you, for example, to monitor the thread's performance characteristics.



A thread is a path of execution through a program. It is the smallest unit of execution that Win32 schedules. It consists of a stack, the state of the CPU registers, and an entry in the execution list of the system scheduler.

A process consists of one or more threads and the code, data, and other resources of a program in memory. Typical program resources are open files, semaphores, and dynamically allocated memory. Each resource of a process is shared by all that process's threads.

A program executes when the system scheduler gives execution control to one of the program's threads. The scheduler determines which threads should run and when. A lower-priority thread might be forced to wait while higher-priority threads complete their tasks. On multiprocessor computers, the scheduler can move individual threads to different processors, thus balancing the CPU load.

Each process starts with a single thread, which is known as the primary thread. Any thread can create additional threads. All the threads within a process share the address space of that process.

The primary thread is not necessarily located at the first index in the collection.


Starting with the .NET Framework version 2.0, the ability to reference performance counter data on other computers has been eliminated for many of the .NET Framework methods and properties. This change was made to improve performance and to enable non-administrators to use the ProcessThread class. As a result, some applications that did not get exceptions in earlier versions of the .NET Framework may now get a NotSupportedException. The methods and properties affected are too numerous to list here, but the exception information has been added to the affected member topics.

The threads of a process execute individually and are unaware of each other unless you make them visible to each other. Threads that share common resources, however, must coordinate their work by using semaphores or another method of interprocess communication.

To get a collection of all the ProcessThread objects associated with the current process, get the Threads property of the Process instance.

.NET Framework
Available since 1.1


Return to top