2 out of 3 rated this helpful - Rate this topic

DispatcherPriority Enumeration

Describes the priorities at which operations can be invoked by way of the Dispatcher.

Namespace:  System.Windows.Threading
Assembly:  WindowsBase (in WindowsBase.dll)
XMLNS for XAML: Not mapped to an xmlns.
public enum DispatcherPriority
Member name Description
Invalid The enumeration value is -1. This is an invalid priority.
Inactive The enumeration value is 0. Operations are not processed.
SystemIdle The enumeration value is 1. Operations are processed when the system is idle.
ApplicationIdle The enumeration value is 2. Operations are processed when the application is idle.
ContextIdle The enumeration value is 3. Operations are processed after background operations have completed.
Background The enumeration value is 4. Operations are processed after all other non-idle operations are completed.
Input The enumeration value is 5. Operations are processed at the same priority as input.
Loaded The enumeration value is 6. Operations are processed when layout and render has finished but just before items at input priority are serviced. Specifically this is used when raising the Loaded event.
Render The enumeration value is 7. Operations processed at the same priority as rendering.
DataBind The enumeration value is 8. Operations are processed at the same priority as data binding.
Normal The enumeration value is 9. Operations are processed at normal priority. This is the typical application priority.
Send The enumeration value is 10. Operations are processed before other asynchronous operations. This is the highest priority.

There is no specific system state or "idleness" corresponding to ApplicationIdle and ContextIdle in the current version of WPF. Both are still valid priorities; therefore, an operation with a priority of ContextIdle has a higher priority than an operation with a priority of SystemIdle.

The Dispatcher does not throttle the execution of an operation if it exceeds a certain percentage of the CPU. One way to throttle a process it to use a timer.

If an operation is posted using Invoke on its own Dispatcher at a priority of Send, the operation bypasses the queue and is immediately executed.

The following example is a call to BeginInvoke that passes a delegate which accepts an argument. The priority is set to Normal.


// Schedule the update function in the UI thread.
tomorrowsWeather.Dispatcher.BeginInvoke(
    System.Windows.Threading.DispatcherPriority.Normal,
    new OneArgDelegate(UpdateUserInterface), 
    weather);


.NET Framework

Supported in: 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ