我有一个需要大量初始化的对象(在强大的机器上需要 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 类型来告诉线程结束。任何关于如何结束这样的线程的想法也很感激。