Хотя BackgroundWorkers могут быть лучшим, самым простым и умным способом многопоточности иногда , я думаю, что вы теперь можете использовать один из других способов многопоточности.
Есть многоспоров / аргументов / троллинга относительно того, какие методы лучше всего использовать в любых обстоятельствах, поэтому я бы посоветовал вам быстро взглянуть на следующие статьи и решить для себя (или если вы не можете найти достаточно хороших ресурсов дляпринять решение, спросить об этом, конечно).
Вы, очевидно, уже смотрели на рабочих на заднем плане, поэтому я не буду перечислять их, и я не буду перечислять всех способов, которыми вы можетенить, просто пара, которая может вас заинтересовать.
Прежде всего, проверьте ThreadPool .Он прост в использовании и довольно эффективно использует ресурсы для повторного использования / повторного использования.Есть некоторые недостатки, такие как использование / удержание слишком большого количества потоков из пула может привести к эксгумации пула, но в простых приложениях это не должно вызывать проблем.
Существует также CLR Async модель , которая поддерживается на удивительном уровне самой платформы, особенно в тех случаях, когда используется какой-либо ресурс ввода-вывода (файл, сеть и т. Д.).
Другим подходом является ParallelКласс , который является одним из моих любимых - я был подключен к многострочному лямбда с тех пор, как он был представлен, и параллель обеспечивает хорошую платформу для этого.
Во всех вышеупомянутых случаях вы можете создать третичныйтемы на лету, без необходимости создавать и поддерживать пул фоновых работников самостоятельно.Трудно сказать, какой подход лучше всего подойдет для вас из представленной информации, но лично я бы рассмотрел пул потоков, если поиск данных для заполнения ваших вкладок не займет слишком много времени.
Надеюсь, это поможет!