none
Application.DoEvents et WPF RRS feed

  • Question

  • Bonjour,

    Mon application WinForm fait appel à Application.DoEvents pour assurer l'affichage dynamique durant l'itération qui peut être assez longue.
    Voici un extrait du code.

    Feu.BackColor = Color.Red  
    Application.DoEvents()     
    
    '' Lister tous les Auteurs contenus dans le document sélectionné
    Formel = New AnalyseurFormel(CurrentDocX)
    Dim name As String = Formel.GetAuteurName()
    While name.Length > 0
    
    ' Enregistrer le nom et l'index de l'Auteur
    Dim node As New TreeNode(name)                
    node.Tag = Formel.IdxAuteur                  
    TreeDoc.Nodes.Add(node)
    
    ' Suivant
    name = Formel.GetAuteurName()
    Application.DoEvents()
    End While
    
    ' Feu et Curseur
    Feu.BackColor = Color.Lime     



    Transposée en WPF, cette application ne fonctionne pas bien car le DoEvents n'existe pas en WPF et du coup, l'affichage dynamique ne se fait pas. L'IHM reste bloqué durant l'exécution de la boucle While. Voici le code, un peu différent, en WPF

    Feu.Background = Brushes.Red TreeDoc.Items.Clear() Formel = New AnalyseurFormel(CurrentDocX) Dim name As String = Formel.GetAuteurName() While name.Length > 0 ' Enregistrer le nom et l'index de l'Auteur Dim node As New TreeViewItem() node.Header = name node.Tag = Formel.IdxAuteur TreeDoc.Items.Add(node) ' Suivant name = Formel.GetAuteurName() End While ' Feu et Curseur Feu.Background = Brushes.Lime


    Comment résoudre ce problème en WPF ? Je désire voir le feu passer du vert initial au rouge puis au vert à la fin et, bien sûr, l'arbre se remplir progressivement.

    Merci de vos suggestions.


     


    Alain

    mardi 31 janvier 2017 17:51

Réponses

Toutes les réponses