Проблема в том, что программа выдает исключение. После создания нескольких потоков. Как мы можем ограничить количество потоков, которые будут созданы в цикле?OutOfMemoryException многопоточность 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