Exporter (0) Imprimer
Développer tout

Dispatcher, classe

Mise à jour : Juillet 2008

Fournit des services pour la gestion de la file d'attente des éléments de travail d'un thread.

Espace de noms :  System.Windows.Threading
Assembly :  WindowsBase (dans WindowsBase.dll)

public sealed class Dispatcher
public final class Dispatcher
public final class Dispatcher
Vous ne pouvez pas créer directement une instance de cette classe dans XAML.

Dispatcher gère une file d'attente classée par ordre de priorité des éléments de travail pour un thread spécifique.

Lorsqu'un Dispatcher est créé sur un thread, il devient le seul Dispatcher à pouvoir être associé au thread, même si le Dispatcher est arrêté.

Si vous tentez d'obtenir le CurrentDispatcher pour le thread actuel et qu'aucun Dispatcher n'est associé à ce dernier, un Dispatcher est créé.

Si un Dispatcher est arrêté, il ne peut pas être redémarré.

Dans WPF, un DispatcherObject n'est accessible que par le Dispatcher auquel il est associé. Par exemple, un thread d'arrière-plan ne peut pas mettre à jour le contenu d'un Button associé au Dispatcher sur le thread d'interface utilisateur. Pour que le thread d'arrière-plan puisse accéder à la propriété Content de Button, le thread d'arrière-plan doit déléguer le travail au Dispatcher associé au thread d'interface utilisateur. Pour ce faire, il peut utiliser Invoke ou BeginInvokeInvoke est synchrone, tandis que BeginInvoke est asynchrone. L'opération est ajoutée à la file d'attente du Dispatcher selon la priorité DispatcherPriority spécifiée.

Si BeginInvoke est appelé au niveau d'un Dispatcher qui s'est arrêté, la propriété d'état du DispatcherOperation retourné a la valeur Aborted.

Toutes les méthodes au niveau de Dispatcher, à l'exception de DisableProcessing, sont libres de threads.

Les objets qui dérivent de DispatcherObject ont une affinité de thread.

Les objets qui dérivent de Freezable sont libres de threads lorsqu'ils sont figés. Pour plus d'informations, consultez Vue d'ensemble des objets Freezable.

L'exemple suivant montre comment placer une opération sur un Dispatcher. Pour obtenir le code source complet de cet exemple, consultez Application monothread avec calcul de longue durée, exemple.

Dans un premier temps, un délégué n'acceptant aucun argument est créé.

public delegate void NextPrimeDelegate();


Ensuite, BeginInvoke(DispatcherPriority, Delegate) est appelé. Cet appel à BeginInvoke(DispatcherPriority, Delegate) prend deux paramètres : la priorité, qui a la valeur DispatcherPriority.Normal, et le rappel, qui est passé par le biais d'une instance du délégué NextPrimeDelegate.

startStopButton.Dispatcher.BeginInvoke(
    DispatcherPriority.Normal,
    new NextPrimeDelegate(CheckNextNumber));


System.Object
  System.Windows.Threading.Dispatcher

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows Vista

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft