Я относительно новичок в .NET-программировании и многопоточности в целом и задавался вопросом, нормально ли использовать .NET при условии, что BackgroundWorker создает рабочие потоки для выполнения некоторой работы в консольном приложении? Из различных документов в Интернете я вижу, что намерение для этого класса больше подходит для ориентированных на пользовательский интерфейс приложений, где вы хотите выполнить некоторую работу в фоновом режиме, но поддерживайте интерфейс пользователя и сообщайте о достигнутом прогрессе, отменяя обработку при необходимости и т.д.
В моем случае, в основном, у меня есть класс контроллера, в котором я хочу развернуть несколько рабочих потоков, чтобы выполнить некоторую обработку (ограничение максимального числа рабочих потоков, порожденных с помощью семафора). Затем я хочу, чтобы мой класс контроллера блокировался, пока все потоки не завершили обработку. Поэтому после того, как я начинаю рабочий поток, чтобы выполнить некоторую работу, я хочу, чтобы поток мог уведомлять поток контроллера, когда обработка завершена. Я вижу, что я могу использовать класс рабочего класса, и обрабатывать события DoWork и RunWorkerCompleted для выполнения этого, однако интересно было ли это хорошая идея? Есть ли лучшие способы достичь этого?