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( );
}