IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

[WPF MVVM] Forcer le rafraichissement d'une image


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut [WPF MVVM] Forcer le rafraichissement d'une image
    Bonjour à tous,

    J'essaie de respecter MVVM, mais parfois j'ai des informations qui ont été envoyé avec onpropertychanged

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Class VM_Base
        Implements INotifyPropertyChanged
        Public Event PropertyChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
     
        Public Sub OnPropertyChanged(Optional ByVal propname As String = "", <System.Runtime.CompilerServices.CallerMemberName> Optional memberName As String = Nothing)
            If propname = "" Then
                RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(memberName))
            Else
                RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propname))
            End If
     
        End Sub
    ...
    Dans mon titre j'indique une image par que c'est ce que me préoccupe dans le cas présent, mais cela peut le faire sur tout.
    Mon image représente un voyant et avant de télécharger des données par le port COM, je change cette image.
    Seulement l'image n'est pas immédiatement changer.

    En VB6 on avait DoEvents, pour indiquer au programme de traiter les demandes en attente comme la mise a jour de l'affichage.
    DoEvent n'existe pas, apparemment en WPF, mais une fonction permet de faire quelque chose de semblable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Public Sub DoEvents()
            On Error Resume Next
            If Application.Current IsNot Nothing Then Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, New ThreadStart(Sub()
                                                                                                                                           End Sub))
        End Sub
    Seulement cette fonction m'indique pas spécialement de mettre à jour des taches annexe comme l'affichage, mais un timer en attente par exemple se lancera aussi. Ce qui dans mon cas me ralentit pas mal le traitement.

    Ma question:
    Y a t'il un moyen de forcer la mise à jour uniquement de l'affichage, afin que dès que je lui est fait un OnPropertyChanged il rafraichie uniquement cette variable.

    Merci

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    déporte tes traitements sur des threads séparés, et ne laisse que du code d'UI sur le thread principal
    ca devrait résoudre le problème et améliorer les perfs si tu as plusieurs traitements en même temps

    les timers c'est pareil, c'est bien pour des choses graphiques où toutes les 500ms on fait un truc qui dure 5ms, sinon ca se déporte.
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Bonjour Pol63,

    Merci pour votre réponse, si c'est la seul solution je l'appliquerais plupart, mais j'y est bien pensé, seulement j'ai beaucoup de vue, bien que quelques une seulement pause quelques petit souci de ce genre. Mais mon produit va être bientôt mis en service en interne pour le moment, et j'ai encore quelques bug de fonctionnement plus gênant à corriger avant, étant tout seul sur le projet j'ai un peu la pression .

    J'ai un autre petit souci "cosmétique" que je met de coté, mais je vais en faire part dans un autre post.

    Merci encore

Discussions similaires

  1. [SERVLET] Forcer le rafraichissement d'une servlet
    Par Finrod dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 03/05/2007, 11h03
  2. Rafraichissement d'une image
    Par jerzy59 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/04/2007, 14h59
  3. [PHP-JS] Forcer le téléchargement d'une image JPG
    Par Amnesiak dans le forum Langage
    Réponses: 5
    Dernier message: 09/11/2006, 23h50
  4. [Image]Rafraîchissement d'une image
    Par Zen_Fou dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 15/05/2006, 18h33
  5. [MFC] probleme de rafraichissement d'une image
    Par Vestaproman dans le forum MFC
    Réponses: 6
    Dernier message: 09/01/2004, 23h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo