none
WPF FAQ - Comment accéder aux contrôles WPF à partir d'un autre thread ? RRS feed

  • Discussion générale

  •  

    Comme Windows Forms, WPF impose également un modèle de thread unique, ce qui signifie qu’on peut uniquement accéder un dérivé de DispatcherObject spécifié à partir de thread qui le crée. Dans Windows Forms, chaque contrôle implémente l’interface ISynchronizeInvoke. Cette interface expose un ensemble de méthodes telles qu’Invoke et BeginInvoke pour imposer un contrat de synchronisation de threads commune qu’on pourrait utiliser pour accéder un contrôle d'un autre thread. Dans WPF, on a également ce type de choses, mais ces opérations sont enveloppées dans une classe appelée Dispatcher, Dispatcher est une façon WPF de l'activation de ce modèle de synchronisation de threads.

    Voici un exemple pour modifier la propriété TextBox.Text lorsque l'appelant est dans un thread différent :

     

    // Réinitialise la zone de texte à partir d'un autre thread 
    textBox.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => 
    { 
      textBox.Text = "New text";
    }));

     

     

    Pour plusieurs informations sur WPF, consultez la page Formation WPF – Foire aux Questions

    lundi 28 juin 2010 11:28