我可以多次运行Thread吗?

时间:2009-10-21 15:18:53

标签: c# multithreading

这是我的问题: 我有一堆线程,每个线程都会完成它的工作然后返回堆栈 在线程第一次运行良好 如果我想从堆栈弹出它,它完成工作后 再次运行:将出现异常,表示此线程正在运行或终止无法重新启动.... 允许多次运行该线程? 谢谢...

3 个答案:

答案 0 :(得分:5)

您不能多次运行一个帖子。一旦线程完成,就完成了。

如果要重用线程,最好的选择是使用Framework ThreadPool。它将自动处理您的“工作”并将其推送到一个免费的线程,调度和排队任务,因为您正在使用所有可用的线程而无法运行。

答案 1 :(得分:5)

听起来像你正在尝试实现自己的线程池。请尝试使用System.Threading.ThreadPool

接下来,将您的Stack{Thread}转换为Stack{Action}。从堆栈弹出项目,使用内置线程池运行它们,然后根据需要将项目返回到堆栈。

答案 2 :(得分:1)

您使用的是内置的ThreadPool对象吗?这可能是分配和重用线程的最佳选择。