Wednesday, September 3, 2008

How to give your thread highest priority using C#

When it comes to programming time critical applications in Windows, life of a programmer can become much more easier if he/she knows a few tricks

One has to understand that setting only the thread's priority does not help. It is the magic combination of the process's priority class and the thread's priority level that decided the final priority of the thread's execution. Below is a link to microsoft's detailed explanation on the above topic.

http://msdn.microsoft.com/en-us/library/ms685100.aspx


But there is one thing notable while doing this in .NET. Using System.Threading.ThreadPriority the maximum priority level you can assign to a thread is "Highest". Using this with the process's priority class "REALTIME_PRIORITY_CLASS" gives the thread priority level of 26 only. To give the thread its maximum priority level of 31, you can use the Kernel32 function "SetThreadPriority" and assign the priority level "THREAD_PRIORITY_TIME_CRITICAL".

Happy Programming,
Stephen.