Comme dans cet exemple :
someImage.Source = newSource;
someImage.refresh();
Il y a quelques jours, dans este post J'ai répondu avec refresh() et j'ai eu des retours comme quoi c'était un hack/abus. Je ne comprends pas pourquoi.
Comme dans cet exemple :
someImage.Source = newSource;
someImage.refresh();
Il y a quelques jours, dans este post J'ai répondu avec refresh() et j'ai eu des retours comme quoi c'était un hack/abus. Je ne comprends pas pourquoi.
Le MSDN a la réponse.
Force le contrôle à invalider sa zone client et à se redessiner immédiatement, ainsi que tous les contrôles enfants.
Invalide toute la surface du contrôle et provoque le redécoupage du contrôle. [ ] L'appel de la méthode Invalidate ne force pas une peinture synchrone.
(C'est moi qui souligne)
Le fait est que Refresh
contrairement à Invalidate
force un appel synchrone, ce qui interrompt effectivement le flux d'événements par défaut dans les formulaires et coupe la ligne dans la file d'attente des messages. Cela peut entraîner le retard d'autres messages de fenêtre (événements du système d'exploitation).
Le site Refresh
n'est pas du tout nécessaire si vous disposez d'une interface utilisateur réactive. La définition du Source
crée un message qui invalide l'affichage du contrôle, de sorte qu'il sera actualisé automatiquement lorsque ce message sera traité.
Ce n'est que si votre code contient une longue boucle, de sorte qu'il ne traite pas du tout de messages pendant une longue période, que vous devez utiliser la fonction Refresh
méthode. Une boucle aussi longue doit être évitée, car elle rend l'interface utilisateur peu réactive.
Parce que la plupart des frameworks gui gèrent les rafraîchissements/mises à jour automatiquement si vous les utilisez correctement.
Avec l'actualisation, vous contournez le symptôme (quelque chose n'est pas automatiquement mis à jour) au lieu de résoudre la cause première.
Le problème est que Refresh commence généralement à se propager comme un virus. Vous l'insérez à un endroit et soudain vous en avez besoin à un deuxième endroit, puis à un troisième, etc.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.