2009-10-21 2 views
0

это моя проблема: У меня есть стек потоков, каждый поток выполнит свою работу, а затем вернется в стек в первый раз, когда поток работает хорошо после того, как он завершит работу, если я хочу поместить ее из стек для запуска снова: появится исключение, в котором указано, что этот поток запущен или завершен, нельзя перезапустить .... разрешено ли запустить поток более одного раза? спасибо ...Могу ли я запустить Thread несколько раз?

ответ

5

Звучит так, будто вы пытаетесь реализовать свой собственный пул потоков. Вместо этого попробуйте использовать System.Threading.ThreadPool.

Затем конвертируйте Stack{Thread} в Stack{Action}. Поп-элементы из стека, запускайте их с помощью встроенного потока, затем возвращайте элементы в стек по мере необходимости.

1

Вы используете встроенный объект ThreadPool? Это может быть наилучшим вариантом для распределения и повторного использования потоков.

+0

Я просто определяю темы, а затем вставляю их в стек Можете ли вы объяснить, как использовать threadpool? – Hany

5

Вы не можете запускать нить более одного раза. Как только нить заканчивается, это делается.

Если вы хотите повторно использовать темы, лучше всего использовать Frame ThreadPool. Он автоматически обрабатывает вашу работу и перенаправляет ее в бесплатные потоки, задачи планирования и очереди, которые нельзя запустить, потому что вы используете все доступные потоки.

+0

спасибо, мой друг Рид, я проверил The threaPool – Hany

Смежные вопросы