Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Dispatcher.BeginInvoke, méthode (DispatcherPriority, Delegate)

Exécute le délégué spécifié de façon asynchrone selon la priorité spécifiée au niveau du thread auquel le Dispatcher est associé.

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

[BrowsableAttribute(false)]
public DispatcherOperation BeginInvoke(
	DispatcherPriority priority,
	Delegate method
)

Paramètres

priority
Type : System.Windows.Threading.DispatcherPriority
Priorité, par rapport aux autres opérations en attente dans la file d'attente des événements du Dispatcher, à laquelle la méthode spécifiée est appelée.
method
Type : System.Delegate
Délégué vers une méthode qui ne prend pas d'arguments, qui fait l'objet d'un push dans la file d'attente des événements du Dispatcher.

Valeur de retour

Type : System.Windows.Threading.DispatcherOperation
Objet qui est retourné immédiatement après l'appel de BeginInvoke et qui peut être utilisé pour interagir avec le délégué en attente d'exécution dans la file d'attente des événements.

ExceptionCondition
ArgumentNullException

method a la valeur null.

InvalidEnumArgumentException

priority n'est pas un DispatcherPriority valide.

Si plusieurs appels BeginInvoke sont effectués selon la même priorité DispatcherPriority, ils sont exécutés dans l'ordre chronologique.

BeginInvoke retourne un objet DispatcherOperation qui peut être utilisé pour interagir avec le délégué lorsque celui-ci se trouve dans la file d'attente des événements.

L'objet DispatcherOperation retourné par BeginInvoke peut être utilisé de différentes manières pour interagir avec le délégué spécifié, à savoir :

  • modification de la priorité DispatcherPriority du délégué en attente d'exécution dans la file d'attente des événements ;

  • suppression du délégué de la file d'attente des événements ;

  • attente du retour du délégué ;

  • obtention de la valeur retournée par le délégué après son exécution.

BeginInvoke est asynchrone ; par conséquent, le contrôle retourne immédiatement à l'objet appelant après avoir été appelé.

Dans WPF, seul le thread qui a créé DispatcherObject peut accéder à cet objet. Par exemple, un thread d'arrière-plan en provenance du thread d'interface utilisateur principal ne peut pas mettre à jour le contenu d'un Button qui a été créé sur le thread d'interface utilisateur. Pour que le thread d'arrière-plan puisse accéder à la propriété de contenu du Button, le thread d'arrière-plan doit déléguer le travail au Dispatcher associé au thread d'interface utilisateur. Cela s'effectue en utilisant Invoke ou d'BeginInvoke. Invoke est synchrone et BeginInvoke est asynchrone. L'opération est ajoutée à la file d'attente des événements 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.

L'exemple suivant montre comment placer une opération sur un Dispatcher. Pour obtenir le code source complet de cet exemple, consultez Single-Threaded Application with Long-Running Calculation Sample (page éventuellement en anglais) .

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


public delegate void NextPrimeDelegate();


Ensuite, BeginInvoke(DispatcherPriority, Delegate) est appelé. Chaque DispatcherObject ayant une propriété qui retourne le Dispatcher auquel il est associé, le Dispatcher souhaité est obtenu en interrogeant le DispatcherObject, en l'occurrence, un Button nommé startStopButton. L'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));


.NET Framework

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

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

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft