가끔씩 메시지없이 종료되는 다중 스레드 .NET 응용 프로그램이 있습니다. 로그를 확인할 때 "KERNEL32.dll의 응용 프로그램 오류"항목이 있습니다. 무엇이 이것을 일으킬 수 있습니까? 여기에 몇 가지 기본적인 코드는 다음과 같습니다다중 스레드 .NET 응용 프로그램은 64 비트 쿼드 코어 Windows Server에서 실행되는 KERNEL32.dll에서 응용 프로그램 오류를 발생시킵니다.
foreach (int id in ids)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(ProcessData), id);
}
ProcessData 방법은 다음과 같습니다
는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 {}
}
경우에 따라서 처리 할 식별자의 수백만이있을 수 있습니다. 그러나 10,000 개의 ID로 테스트하면 대개 응용 프로그램 오류가 발생합니다. 나는 이것에 관해 정확하게 가고 있냐?
도움 주셔서 감사합니다.
코드가 너무 많은 단서를 제공하지는 않지만 아래의 leppie의 질문 외에도 ids 컬렉션은 다른 곳에서 만져지나요? – SpaceghostAli