問題は、プログラムが例外をスローすることです。複数のスレッドを作成した後。どのようにしてループ内で作成されるスレッドの数を制限できますか?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回目の先頭から始まります。スレッドプールを追加すると、このループは非常に高速です。したがって、スレッドプールは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