我有一個多線程的.NET應用程序偶爾會在沒有任何消息的情況下終止。當我檢查日誌時,有一個「KERNEL32.dll中的應用程序錯誤」條目。什麼可能導致這個?下面是一些基本代碼:多線程.NET應用程序導致運行在64位四核心Windows服務器上的KERNEL32.dll中出現應用程序錯誤
foreach (int id in ids)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(ProcessData), id);
}
的過程數據的方法是這樣的:
private void ProcessData(object _id)
//Load some data from a database with id = _id
//Process that data and push it to another server using HTTP
//Increment a counter
Interlocked.Increment(ref counter);
//Update progress bar
try
{
// Invoke the delegate on the form.
this.Invoke(new BarDelegate(UpdateBar), counter);
}
catch {}
}
可以有幾百萬的ID在某些情況下,要處理的。但僅用10,000個ID進行測試通常會導致所描述的應用程序錯誤。我正確地處理這個問題嗎?
謝謝你的幫助!
你的代碼並沒有給出太多的線索,除了下面的leppie問題之外,其他地方的ids集合還會被觸動嗎? – SpaceghostAli 2009-09-25 13:56:18