2009-10-21 49 views
0

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

回答

5

听起来像你想要实现自己的线程池。改为使用System.Threading.ThreadPool

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

1

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

+0

我只是定义线程,然后将它们推入堆栈 您能否解释更多如何使用线程池? – Hany 2009-10-21 15:22:32

5

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

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

+0

感谢我的朋友里德我会检查threaPool – Hany 2009-10-21 15:23:49

相关问题