문제는 프로그램에서 예외가 발생한다는 것입니다. 여러 스레드를 작성한 후. 루프에서 만들 스레드 수를 어떻게 제한 할 수 있습니까?OutOfMemoryException multithreading C#
for (int jrCnt = rCnt; jrCnt <= arrayTable.GetUpperBound(0); jrCnt++)
{
/* bla bla bla */
if ((!string.IsNullOrEmpty(prcI.name)) &&
(prcI.prc != 0))
{
/*bla bla bla*/
var thread = // run updade or add
new Thread(() =>
{
if (!Accessor.AddProductUpdateProduct(prcI)) _updateCounter++;
_countadd++;
});
thread.Name = "Add_or_update-no_" + thread.ManagedThreadId;
thread.Priority = ThreadPriority.Lowest;
thread.Start();
}
일부 설명.
여기 루프가 n 번 위로 시작됩니다. 일단 Threadpool을 추가하면이 루프가 매우 빠릅니다. 따라서 Threadpool은 180 번 트리거되었습니다. 나는 내 영어를 사과한다.
for (int i = sbook; i < book; i++)
{
dt = Accessor.ImporterXls(_path, i);// array for method
ConstructWithBook(dt, rCnt, sbook, book, priceSelect, nametov, pricetov,
categorytov);
}
당신은 여기에 일부 내용을 제공하고 더 구체적으로 말씀 귀하의 질문을 할 필요가 사용해보십시오. 직접 귀하의 질문에 대답, 나는 Thread.Start 제거 말을하고 싶지만. – diggingforfire
별도의 스레드에서 실행 코드 조각 싶어요. 프로그램 속도를 높이기 위해 필요합니다. 이 루프는 9000 개의 레코드를 처리합니다. 따라서 많은 스레드를 만들고 메모리가 부족합니다. – JinDeveloper