Thread: By default in .NET, the programs are single-threaded. However, you have the ability to create multiple threads. The reason you would want to do this is because if you have only one thread, the user is going to have to wait until that thread is done running before they can do anything in the program. Here's an example of an application and how it might use multi-threading: There are commercial software packages for doing 3D rendering, like 3D Studio Max. This program would be a running Process. These create rendered CGI images and video, like what you see in a Pixar movie. The artist creates wireframes and then renders them. If they were single-threaded, the artist would have to sit and not do anything while it is being rendered. However, if the Process started a separate thread for rendering, the artist could still keep creating wireframes in the program, and the rendering thread would render whatever wireframe they said to render. Within that Process, however, there could be multiple threads. A Process that's RealTime (top of the food chain) could have 2 threads running, one low priority and one high priority. Within that process, the high priority thread is going to take precedence over the low priority thread. According to MSDN the following are the possible priorities for (from highest to lowest priority):
- Processes: RealTime, High, Above Normal, Normal, Below Normal, Idle
- Threads: Highest, AboveNormal, Normal, BelowNormal, Lowest