我有一個服務,需要永遠運行,以監視一臺服務器。爲了做到這一點,我有5個任務需要由服務完成(目前5個,將有數百個)。OutOfMemory異常C#當使用線程
我創建了一個線程池,最多5個線程。有一個線程用來獲取任務的線程,然後每個線程處理任務,然後再次入隊。隊列包含具有5個小屬性的對象。
後的服務運行了一段時間,我得到一個OutOfMemoryException,在那裏我執行該行:
ThreadPool.QueueUserWorkItem(currentJob.ProcessJob, (object)timeToWwait);
的timeToWwait
是一個int,我不使用它了。
的背景是這樣的:
ThreadPool.SetMinThreads(0, 0);
ThreadPool.SetMaxThreads(5, 5);
while (true)
{
bool processJob = false;
bool checkedFrontEnd = false;
_qLock.EnterWriteLock();
try
{
if (_jobQueue.Count > 0)
{
currentJob = _jobQueue.Dequeue();
// currentJob.IsActive = true;
// processJob = true;
}
}
finally
{
_qLock.ExitWriteLock();
}
ThreadPool.QueueUserWorkItem(currentJob.ProcessJob, (object)timeToWwait);
//currentJob.ProcessJob((object)timeToWwait);
_qLock.EnterWriteLock();
try
{
_jobQueue.Enqueue(currentJob);
}
finally
{
_qLock.ExitWriteLock();
}
你有什麼建議嗎?
請參閱關於在您的標題中包含您的問題和標籤簽名的常見問題。我已經修復了兩次,但我從中得到的2個代表是不值得再做的。 – 2011-12-30 04:47:41