Сценарий
У меня есть приложение Windows Forms. Внутри основной формы есть цикл, который повторяется около 3000 раз. Создание нового экземпляра класса в новом потоке для выполнения некоторых вычислений. Принимая во внимание, что эта настройка использует пул потоков, пользовательский интерфейс остается отзывчивым, когда в цикле всего около 100 итераций (100 активов для обработки). Но как только это число начинает сильно увеличиваться, пользовательский интерфейс блокируется в режиме eggtimer, и, таким образом, журнал, который записывается в список в форме, становится нечитаемым.
Вопрос
Правильно ли я считаю, что лучший способ обойти это - использовать Background Worker?
И заблокирован ли пользовательский интерфейс, потому что, хотя я использую много разных потоков (для скорости), сам интерфейс не находится в отдельном отдельном потоке?
Предлагаемые реализации высоко оценены.
EDIT !!
Итак, давайте предположим, что вместо того, чтобы просто запустить и поставить в очередь 3000 активов для обработки, я решил сделать их партиями по 100. Как бы я поступил так эффективно? Ранее я пытался добавить «Thread.Sleep (5000);» после того, как каждая партия из 100 была выпущена, но все это казалось дерьмовым ...