我有一个对象需要进行大量初始化(在强力机器上需要1到2秒)。但是一旦初始化完成,它只需要约20毫秒来完成典型的“工作”。
为了防止每次应用程序想要使用它时都重新初始化该对象(在典型用法中可能是每秒50次或数分钟不使用),我决定给它一个工作队列,并在其自己的线程上运行,检查队列中是否有任何工作。 但是,我不完全确定如何创建一个无限运行的线程,无论是否有工作。
以下是我目前所拥有的,欢迎任何批评意见。
private void DoWork()
{
while (true)
{
if (JobQue.Count > 0)
{
// do work on JobQue.Dequeue()
}
else
{
System.Threading.Thread.Sleep(50);
}
}
}
事后想法:我在考虑是否需要优雅地终止此线程,而不是让它永远运行。因此,我认为我会添加一种作业类型,告诉线程结束。如何终止这样的线程的任何想法也受到欢迎。