我有一个需要大量初始化的对象(在强壮的机器上1-2秒)。虽然一旦初始化,它只需要大约20毫秒来做一个典型的“工作”正确的方式有一个无休止的工作线程?
为了防止它每次应用程序想要使用它重新初始化(可能是每秒50次在典型的使用中只需几分钟),我决定给它一个job que,并让它在自己的线程上运行,检查是否有任何工作。然而,我不完全确定如何使一个线程无论运行还是不运行。
这是我到目前为止,任何批评是值得欢迎的
private void DoWork()
{
while (true)
{
if (JobQue.Count > 0)
{
// do work on JobQue.Dequeue()
}
else
{
System.Threading.Thread.Sleep(50);
}
}
}
左思右想:我想我可能需要杀死这个线程优雅的欧洲工商管理学院让它永远运行下去的,所以我想我会加告诉线程结束的作业类型。关于如何结束这样的线程的任何想法也赞赏。
经典队列,锁定和脉动。 – 2009-10-14 15:28:30
+1非常好... – 2009-10-14 15:30:24
为什么写一些已经写好的东西?宝贝,宝贝。 – Will 2009-10-14 15:30:45