【发布时间】:2012-01-08 04:27:55
【问题描述】:
问题是程序抛出异常。创建多个线程后。我们如何限制循环中创建的线程数?
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 触发了 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..
-
我想在单独的线程中执行一段代码。我需要它来加速程序。此循环处理 9000 条记录。因此,创建了很多线程而没有足够的内存。
标签: arrays multithreading for-loop