2009-10-21 8 views
3

dans le thread principal que je dois faire ce qui suit:Question sur les formes modales et les fils

  1. Créer un deuxième fil où je vais montrer un formulaire modal qui agira comme un « indicateur d'activité »
  2. Démarrer une tâche (cette tâche DOIT être exécutée à partir du thread principal)
  3. Fermez le formulaire modal créé dans le deuxième fil.

La question est que je ne sais pas comment montrer une forme modale et ne pas arrêter le thread principal.

Une suggestion?

Répondre

2

Je voudrais utiliser un thead ThreadPool ... quelque chose comme ...

ThreadPool.QueueUserWorkItem(o => dlg.Show()); 

Cela lancera la boîte de dialogue sur un thread séparé. Votre thread principal continuera le traitement.

+0

Ce ne sera pas modal. Vous voudrez utiliser ThreadPool.QueueUserWorkItem (() => dlg.ShowDialog (this);); –

+0

Riche, j'apprécie votre réponse. En fait, je savais comment montrer un formulaire à partir d'un deuxième fil. Ce que je ne savais pas, c'est comment montrer la forme comme modale au second fil, puis, après avoir terminé mon travail à partir du fil principal, dire à la deuxième thread de fermer le formulaire. J'ai fini par résoudre mon problème en mettant une variable de contrôle dans mon formulaire. Quelque chose comme "canDie". Je fais ShowModal dans le deuxième thread (le thread ne meurt pas) Je fais ce que je veux faire dans le thread principal et après que je passe canDie à true à l'intérieur de forme, il se ferme et termine mon deuxième thread. En tout cas je vous ai voté. Merci. –

+0

Une autre observation: Les formes modales dans un autre thread ne sont pas modales. Pour qu'ils se comportent correctement, nous devons définir la propriété TopMost sur true –

Questions connexes