Mam obiekt, który wymaga dużo inicjalizacji (1-2 sekund na silnej maszynie). Jednak po jej zainicjowaniu zajmuje to tylko około 20 milisekund, aby wykonać typową "pracę":Właściwy sposób na nieskończoną wątek pracownika?
Aby zapobiec ponownej inicjalizacji za każdym razem, gdy aplikacja chce z niej korzystać (może to być 50 razy na sekundę lub nie w ogóle przez kilka minut w typowym użytkowaniu) postanowiłem nadać mu kolejkę zadań i uruchomić ją we własnym wątku, sprawdzając, czy nie ma dla niej żadnej pracy w que. Jednak nie jestem całkowicie pewien, jak utworzyć wątek, który działa nieokreślony z lub bez pracy.
Oto co mam do tej pory, każda krytyka jest mile widziana
private void DoWork()
{
while (true)
{
if (JobQue.Count > 0)
{
// do work on JobQue.Dequeue()
}
else
{
System.Threading.Thread.Sleep(50);
}
}
}
Po myśli: Myślałam może muszę zabić ten wątek wdzięcznie INSEAD pozwolić działać wiecznie, więc myślę, że będę dodać Typ zadania, który mówi, że wątek się kończy. Dowiedziałem się też, jak zakończyć wątek.
Klasyczna kolejka, blokada i pulsowanie. –
+1 bardzo ładne ... –
Po co pisać coś, co zostało już napisane? Pfx, kochanie. – Will