Maison >développement back-end >C++ >Comment puis-je mettre à jour en toute sécurité les contrôles WPF à partir d'un thread non-UI ?
Threading WPF : mise à jour en toute sécurité des contrôles à partir des threads d'arrière-plan
La nature monothread de WPF nécessite une gestion minutieuse des mises à jour de l'interface utilisateur à partir des threads non principaux. La classe Dispatcher
fournit la solution.
Exploiter la méthode Dispatcher.Invoke
Dispatcher.Invoke
permet l'exécution d'un délégué sur le thread principal de l'interface utilisateur, crucial pour accéder et modifier en toute sécurité les contrôles WPF à partir des threads d'arrière-plan.
Étapes de mise en œuvre :
Dispatcher.Invoke
pour exécuter un délégué responsable des mises à jour de l'interface utilisateur.Action
ou Func
comme argument à Dispatcher.Invoke
.Exemple illustratif :
<code class="language-csharp">// Launch a background thread for data fetching Thread dataThread = new Thread(RetrieveData); dataThread.Start(); // Background thread function private void RetrieveData() { // ... Data retrieval from a web server ... // Update the UI via Dispatcher.Invoke Application.Current.Dispatcher.Invoke(() => { // Update WPF controls with the fetched data }); }</code>
Remarque importante :
Évitez d'exécuter des opérations longues dans Dispatcher.Invoke
pour éviter le gel de l'interface utilisateur. Pour les tâches qui prennent du temps, utilisez plutôt un BackgroundWorker
.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!