Я знаю несколько способов начать что-то выполнять в новом потоке:
1) Один из самых простых, использование "пула потоков" (ThreadPool).
2) Создавать новый поток руками.
3) (Читал в книге, но лично не увидел разницы, что в параллельном, что в одном потоке) BackgroundWorker.
4) Вызвать метод BeginInvoke у делегата.
(может в чем ошибся, поправьте меня, но про 3 и 4 я читал в книге, 4 вообще еще не юзал)
Вопросы:
1) При использовании BackgroundWorker прорисовка формы все равно жуть как тормозит! а точнее вообще ни на что не реагирует! Такое ощущение, что я запускаю тяжкое действие в текущем потоке формы. Так и должно быть? Если нет, тогда можно рабочий код? (заранее спасибо)
2) При использовании пула потоков, если задача, которая работает в параллельном потоке очень ресурсоемкая, отрисовка формы, мягко говоря, тоже не спешит работать. Так и должно быть? Если нет, тогда можно рабочий код? (заранее спасибо). Если же задача не ресурсоемкая, то все работает нормально.
Итого: Я знаю один способ, который действительно работает безотказно: создавать потоки ручками.