У меня есть объект, который требует много инициализации (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, который сообщает, что поток заканчивается. Любые мысли о том, как закончить такой поток, тоже оценили.