2009-10-21 8 views
0

ceci est mon problème: J'ai une pile de threads, chaque thread fera son travail et retournera à la pile au premier temps que le thread fonctionne bien après qu'il a fini le travail si je veux l'éclater de la pile pour fonctionner à nouveau: Exception apparaîtra qui dit que ce fil est en cours d'exécution ou terminé ne peut pas être redémarré .... est-il autorisé à exécuter le fil plus d'une fois ?? merci ...Puis-je exécuter un thread plusieurs fois?

Répondre

5

Il me semble que vous essayez d'implémenter votre propre pool de threads. Essayez d'utiliser System.Threading.ThreadPool à la place. Puis, convertissez votre Stack{Thread} en Stack{Action}. Faites sortir les éléments de la pile, exécutez-les en utilisant le pool d'unités d'exécution intégré, puis renvoyez les éléments à la pile si nécessaire.

1

Utilisez-vous l'objet ThreadPool intégré? Cela peut être la meilleure option pour allouer et réutiliser des threads.

+0

Je viens de définir les threads, puis les pousser dans la pile Pouvez-vous expliquer plus comment utiliser le pool de threads ?? – Hany

5

Vous ne pouvez pas exécuter un thread plus d'une fois. Une fois qu'un thread finit, c'est fait.

Si vous souhaitez réutiliser des threads, la meilleure option est d'utiliser le ThreadPool du Framework. Il va gérer automatiquement votre «travail» et le pousser dans un thread gratuit, la planification et la mise en file d'attente des tâches qui ne peuvent pas être exécutées, car vous utilisez tous les threads disponibles.

+0

merci mon ami Reed je vais vérifier The threaPool – Hany

Questions connexes