我有一個需要大量初始化的對象(在強壯的機器上1-2秒)。雖然一旦初始化,它只需要大約20毫秒來做一個典型的「工作」正確的方式有一個無休止的工作線程?
爲了防止它每次應用程序想要使用它重新初始化(可能是每秒50次在典型的使用中只需幾分鐘),我決定給它一個job que,並讓它在自己的線程上運行,檢查是否有任何工作。然而,我不完全確定如何使一個線程無論運行還是不運行。
這是我到目前爲止,任何批評是值得歡迎的
private void DoWork()
{
while (true)
{
if (JobQue.Count > 0)
{
// do work on JobQue.Dequeue()
}
else
{
System.Threading.Thread.Sleep(50);
}
}
}
左思右想:我想我可能需要殺死這個線程優雅的歐洲工商管理學院讓它永遠運行下去的,所以我想我會加告訴線程結束的作業類型。關於如何結束這樣的線程的任何想法也讚賞。
經典隊列,鎖定和脈動。 – 2009-10-14 15:28:30
+1非常好... – 2009-10-14 15:30:24
爲什麼寫一些已經寫好的東西?寶貝,寶貝。 – Will 2009-10-14 15:30:45