OutOfMemoryException многопоточность c # - PullRequest
1 голос
/ 08 января 2012

Проблема в том, что программа выдает исключение.После создания нескольких потоков.Как мы можем ограничить количество потоков, которые будут созданы в цикле?

 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);
            }

Ответы [ 2 ]

1 голос
/ 08 января 2012

Попробуйте использовать ThreadPool , MSDN Класс пула потоков Описание

1 голос
/ 08 января 2012

Вы хотите использовать пул потоков: http://msdn.microsoft.com/en-us/library/h4732ks0.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...