BackgroundWorker действительно больше подходит для использования в пользовательском интерфейсе. На сервере вы должны вместо этого использовать ThreadPool.
когда используется пул потоков в c имеет хорошую запись о том, когда использовать пулы потоков. По сути, при обработке запросов на сервере обычно лучше использовать пул потоков по многим причинам. Например, со временем вы не будете подвергаться дополнительным накладным расходам при создании новых потоков, а пул налагает ограничение на общее количество активных потоков в любой момент времени, что помогает экономить системные ресурсы, находясь под нагрузкой.
Обычно BackgroundWorker
обсуждается, когда фоновое задание должно выполняться приложением с графическим интерфейсом. Например, страница MSDN для System.ComponentModel.BackgroundWorker
специально относится к случаю использования пользовательского интерфейса:
Класс BackgroundWorker позволяет запускать операцию в отдельном выделенном потоке. Отнимающие много времени операции, такие как загрузка и транзакции с базой данных, могут привести к тому, что пользовательский интерфейс (UI) будет выглядеть так, как будто он перестал отвечать во время работы. Если вам нужен отзывчивый пользовательский интерфейс и вы сталкиваетесь с длительными задержками, связанными с такими операциями, класс BackgroundWorker предоставляет удобное решение.
Это не означает, что он не может использоваться на стороне сервера, но цель класса предназначена для использования в пользовательском интерфейсе.