ProcessThreadmarshal by reference, disposable

System.Diagnostics (system.dll)class

This class represents a thread, the smallest unit of execution under Win32. Use Process.Threads to get an array of all the threads contained within a given process. As with processes, a thread runs with a given priority. BasePriority represents the base priority for a thread. From time to time, the operating system changes a thread's priority; a thread's current priority is available from CurrentPriority. Threads in background applications run with a lower priority, as do threads that are sleeping. BasePriorityPriorityLevel specifies a range of appropriate priorities for a thread.

If a process is ProcessPriorityClass.Normal, ProcessPriorityClass.High, or ProcessPriorityClass.RealTime, you can set a thread's PriorityBoostEnabled to true. This gives the thread an extra boost whenever the user is interacting with the program's user interface. You can make a thread prefer one processor over another by setting the value of IdealProcessor. ProcessorAffinity allows you to set up a bitfield that represents one or more preferred processors. Bit 0 represents the first processor, bit 1 the second, and so on. For example, a ProcessorAffinity of 0x0005 (bits 0 and 2 on) indicates that the first and third processor are preferred. Use ResetIdealProcessor( ) to tell the thread that it can run on any processor, leaving the processor choice up to the operating system.

The current state of a thread is returned by ThreadState. If a thread is waiting, you can retrieve the reason the thread is waiting via WaitReason. PrivilegedProcessorTime and UserProcessorTime return the privileged and user processor time, and TotalProcessorTime returns the sum of those two.

The ProcessThread class differs from the System.Threading.Thread type. ProcessThread represents the view of a thread from an administrative viewpoint, while System.Threading.Thread represents a thread from its creator's viewpoint. When you want to enumerate and interact with the threads of an external process, use ProcessThread. When you need to create a new thread in your own program, use System.Threading.Thread.

public class ProcessThread : System.ComponentModel.Component {
// Public Instance Properties
   public int BasePriority{get; }
   public int CurrentPriority{get; }
   public int Id{get; }
   public int IdealProcessor{set; }
   public bool PriorityBoostEnabled{set; get; }
   public ThreadPriorityLevel PriorityLevel{set; get; }
   public TimeSpan PrivilegedProcessorTime{get; }
   public IntPtr ProcessorAffinity{set; }
   public IntPtr StartAddress{get; }
   public DateTime StartTime{get; }
   public ThreadState ThreadState{get; }
   public TimeSpan TotalProcessorTime{get; }
   public TimeSpan UserProcessorTime{get; }
   public ThreadWaitReason WaitReason{get; }
// Public Instance Methods
   public void ResetIdealProcessor( );


System.Object System.MarshalByRefObject System.ComponentModel.Component(System.ComponentModel.IComponent, System.IDisposable) ProcessThread

Returned By


Passed To

ProcessThreadCollection.{Add( ), Contains( ), CopyTo( ), IndexOf( ), Insert( ), ProcessThreadCollection( ), Remove( )}

    Part II: Programming with the .NET Framework
    Part IV: API Quick Reference
    Chapter 26. System