Я относительно новичок в .NET-программировании и многопоточности в целом и задавался вопросом, нормально ли использовать .NET, предоставляя BackgroundWorker для создания рабочих потоков для выполнения некоторой работы в консольном приложении ? Из различных документов в Интернете я вижу, что намерение для этого класса больше подходит для приложений, ориентированных на пользовательский интерфейс, где вы хотите выполнить некоторую работу в фоновом режиме, но сохраняйте пользовательский интерфейс и сообщайте о ходе выполнения, отменяя обработку, если это необходимо, и т.д.Использование класса .NET BackgroundWorker в консольном приложении
В моем случае, в основном, у меня есть класс контроллера, в котором я хочу развернуть несколько рабочих потоков, чтобы выполнить некоторую обработку (ограничение максимального числа рабочих потоков, порожденных с помощью семафора). Затем я хочу, чтобы мой класс контроллера блокировался, пока все потоки не завершили обработку. Поэтому после того, как я начинаю рабочий поток, чтобы выполнить некоторую работу, я хочу, чтобы поток мог уведомлять поток контроллера, когда обработка завершена. Я вижу, что я могу использовать класс рабочего класса, и обрабатывать события DoWork и RunWorkerCompleted для выполнения этого, однако интересно было ли это хорошая идея? Есть ли лучшие способы достичь этого?
Возможно, это может не помочь вам решить эту проблему, но вам могут заинтересовать новые функции параллельного программирования .NET Framework 4. Что-то, на что нужно следить - скоро выйдет. http://msdn.microsoft.com/en-us/concurrency/default.aspx –