2009-09-04 5 views
2

Possible en double:
C# Threading/Lock confusionAttendez que tous les threads de travail pour mettre fin à

J'ai le problème suivant: J'ai la classe de surveillance, qui est en cours d'exécution de son propre fils qui écrit de file d'attente dans le fichier (donc l'application principale ne doit pas attendre sur IO). Mais, lorsque le thread de l'application principale se termine (le flux de contrôle s'exécute après sa dernière ligne), le thread du moniteur se termine également, même s'il est toujours en cours d'exécution (file d'attente complète).

Est-il possible, sans modifier le thread principal, d'attendre que le thread de travail soit terminé? C#.

EDIT: Je ne peux pas modifier le fil principal. Je n'écris que du code 'support' pour une application énorme avec une API donnée (une méthode statique contenant ce que j'écris, où est lu depuis la configuration), il n'y a aucun moyen de changer de threads, l'application principale ne doit pas dépendre de mon code.

Répondre

1

Changez-les. Faites de votre thread principal celui qui surveille, et engendrez les threads de travail (écrivez de Q à classer) à partir de là.

Ou sont les principaux fils de démarrage de fil pour le moniteur et le travail, et alors la principale rotation du fil et attendre (boucle jusqu'à ce qu'il obtienne abort/notifications complètes des autres fils)

1

Vous pouvez utiliser un ManualResetEvent et appel WaitOne() à la fin de votre thread d'exécution principal. Lorsque le thread de travail est terminé, signalez ManualResetEvent et il continuera l'exécution du thread principal.

Questions connexes