2010-11-18 9 views
1

J'ai un code qui s'exécute pendant un certain temps sur le thread graphique (pour simplifier les choses, supposons dans l'événement Button_Click). Lorsque la méthode démarre, je souhaite afficher un message "Veuillez patienter" et continuer à travailler. Lorsque le travail est terminé, je vais cacher le message et continuer.Comment afficher et masquer le message "Please wait" pour l'utilisateur

Je sais que je peux le faire avec BackgroundWorker (ou tout autre discussion liés), mais j'espérais il y en a déjà fini comme:

MBox.Show("Please wait..."); 
//do my work... 
MBox.Hide(); 
+0

Vous ne voulez pas travailler sur le thread principal de l'interface utilisateur ... Il verrouillera votre interface et donnera l'impression que votre application est en panne. Toujours le faire sur un fil de fond si c'est tout sauf trivial. Qui plus est, avec un MessageBox, il n'y a aucun moyen pour un utilisateur de savoir combien de temps votre tâche va s'exécuter, vraiment vous voulez une barre de progression si possible. – Ian

Répondre

1

Si vous utilisez .Net 4, vous pouvez exécuter un Task pour travailler avec votre travailleur d'arrière-plan, sinon vous pouvez faire du threading, mais ils ne doivent pas être dans le même thread.

3

Si vous avez un processus en cours d'exécution à long, vous ne devriez pas faire ceci dans le fil de l'interface utilisateur. Quel est le problème avec BackgoundWorker? Cette classe est géniale! Je recommanderais que vous l'utilisiez s'il s'agit d'une application WinForms.

0

Vous pouvez créer votre propre formulaire pour cela. Il n'y a rien de mal intrinsèquement à faire attendre l'utilisateur s'il s'attend à attendre ou doit attendre. Nous avons des applications où le flux de travail normal nécessite une courte attente. Le placer dans un thread d'arrière-plan n'aide pas l'utilisateur car ils doivent encore attendre que l'opération se termine avant de pouvoir faire autre chose.

Questions connexes