Quelqu'un sait pourquoi invalidate doit être appelé par thread d'interface utilisateur?Pourquoi invalider doit être appelé par le thread d'interface utilisateur
Comme dans Java Swing, la fonction repaint
peut être appelée à la fois par un thread non UI et un thread UI. repaint
effectue une tâche très similaire à invalidate
(cette méthode provoque un appel à la méthode de peinture de ce composant dès que possible, sinon cette méthode provoque un appel à la méthode de mise à jour de ce composant dès que possible.).
Personnellement, je pense que cette question est "sous-estimée". J'ai aussi pensé à cette question, et je suis arrivé au point que la raison en est la synchronisation. Si vous mettez à jour (retracer) l'interface utilisateur uniquement à partir d'un thread, il n'y a aucune raison de faire de la synchronisation. Imaginez un scénario: dans le thread1 vous vérifiez textView pour l'égalité à une chaîne de caractères "text", si vous réussissez, vous changez le textView en "text" + "1". Mais en attendant thread2 pourrait éventuellement changer le contenu en "text2", et vous pourriez vous retrouver avec "text21", ce qui n'est pas ce que vous vouliez. Donc, pas besoin de synchroniser. D'autres significations? – azizbekian