【发布时间】:2010-12-06 17:25:12
【问题描述】:
我有一个需要大量初始化的对象(在一台强大的机器上需要 1-2 秒)。虽然一旦初始化完成一个典型的“工作”只需要大约 20 毫秒
为了防止它在每次应用程序想要使用它时被重新初始化(在典型使用情况下可能是每秒 50 次或根本不初始化几分钟),我决定给它一个工作队列,并且让它在自己的线程上运行,检查队列中是否有任何工作。但是我不完全确定如何使线程在有或没有工作的情况下无限运行。
这就是我目前所拥有的,欢迎任何批评
private void DoWork()
{
while (true)
{
if (JobQue.Count > 0)
{
// do work on JobQue.Dequeue()
}
else
{
System.Threading.Thread.Sleep(50);
}
}
}
经过思考:我在想我可能需要优雅地杀死这个线程而不是让它永远运行,所以我想我会添加一个 Job 类型来告诉线程结束。任何关于如何结束这样的线程的想法也很感激。
【问题讨论】:
标签: c# .net multithreading worker-thread