【发布时间】:2012-03-25 11:56:00
【问题描述】:
我有一个方法 void DoWork(object input) 大约需要 5 秒才能完成。我读到Thread 比ThreadPool 更适合这些更长的操作,但我遇到了问题。
我单击一个调用threadRun.Start(input) 的按钮,该按钮运行并完成正常。我再次单击该按钮并收到以下异常:
Thread is running or terminated; it cannot restart.
你不能“重用”一个线程吗?我应该使用线程池吗?与 ThreadPool 相比,为什么 Thread “更适合更长的操作”?如果您不能重用线程,为什么还要使用它(即它提供了哪些优势)?
【问题讨论】:
-
我刚刚检查了我的一些代码,每次需要重用它时我都会重新创建线程。我这样做是因为我的代码中也出现了完全相同的错误。就我而言,这样做并不太贵,所以我没有进一步调查。
-
对于线程与线程池,请检查此 [stackoverflow 帖子][1] [1]:stackoverflow.com/questions/230003/thread-vs-threadpool
标签: c# multithreading