Application monothread avec calcul de longue durée, exemple

Mise à jour : novembre 2007

Cet exemple illustre la manière d'empêcher l'interface utilisateur d'être bloquée dans une application à un seul thread qui effectue un traitement long.

Cet exemple possède un Button qui lance un calcul de nombres premiers lorsque l'on clique dessus. Théoriquement, ce calcul est infini, donc si le gestionnaire d'événements simple entre dans une boucle et commence le calcul des nombres premiers, l'appel ne renverra jamais rien et le thread de l'interface utilisateur sera bloqué.

Pour éviter ce comportement, l'exemple passe une tâche asynchrone dans la file d'attente Dispatcher du thread de l'interface utilisateur en appelant BeginInvoke. La tâche entrée dans la file traite un nombre lorsque le thread de l'interface utilisateur est dans l'état SystemIdle et transmet un autre appel au répartiteur pour traiter le nombre suivant lorsque le thread de l'interface utilisateur sera à nouveau inactif.

Ceci permet de s'assurer que le thread de l'interface utilisateur a toujours la priorité sur le calcul du nombre suivant, l'interface utilisateur ne se bloque donc pas.

Pour plus d'informations sur cet exemple, consultez Modèle de thread.

Cet exemple présente une fonctionnalité spécifique de Windows Presentation Foundation et, par conséquent, ne suit pas les meilleures pratiques de développement d'applications. Pour un traitement complet des meilleures pratiques de développements d'applications Windows Presentation Foundation (WPF) et Microsoft .NET Framework, reportez-vous, selon les cas, aux documents suivants :

Accessibilité - Meilleures pratiques d'accessibilité

Localisation - Vue d'ensemble de la globalisation et de la localisation WPF

Performances - Optimisation des performances des applications WPF

Sécurité - Sécurité de Windows Presentation Foundation

Download sample

Génération de l'exemple

  • Installez le Kit de développement logiciel (SDK) Windows et ouvrez la fenêtre Commande de son environnement de génération. Dans le menu Démarrer, pointez sur Tous les programmes et sur Microsoft Windows SDK, puis cliquez sur CMD Shell.

  • Téléchargez l'exemple, généralement à partir de la documentation du Kit de développement logiciel (SDK), vers votre disque dur local.

  • Pour générer l'exemple à partir de la fenêtre Commande de l'environnement de génération, accédez au répertoire source de l'exemple. À l'invite de commandes, tapez MSBUILD.

  • Pour générer l'exemple dans Microsoft Visual Studio, chargez l'exemple de solution ou de fichier projet, puis appuyez sur CTRL+MAJ+B.

Exécution de l'exemple

  • Pour exécuter l'exemple compilé à partir de la fenêtre Commande de l'environnement de génération, exécutez le fichier .exe du dossier Bin\Debug ou Bin\Release contenu sous le dossier du code source de l'exemple.

  • Pour exécuter l'exemple compilé avec le débogage dans Visual Studio, appuyez sur F5.

Voir aussi

Tâches

Simulation du service Weather via Dispatcher, exemple

Navigateur Web multithreading, exemple

Désactiver une source de commande via une horloge système, exemple

Concepts

Modèle de thread