Лучшая практика для нескольких длинных методов с помощью backgroundworker

У меня есть форма, которая имеет много длинных методов. Мои поиски: Какова лучшая практика? Используйте анонимный метод и только один backgroundworker или создайте экземпляр BackgroundWorker к каждому длинному методу.

Помогите.Спасибо.

7
задан Nick 10 March 2010 в 18:35
поделиться

2 ответа

Я бы лично использовал один экземпляр BackgroundWorker для каждой из ваших задач. Однако имейте в виду, что вы можете несколько раз вызывать один и тот же метод делегата в нескольких разных экземплярах потока.

Имея один BackgroundWorker для каждой задачи с длинным методом, вы получите полный контроль над своими методами. Кроме того, насколько я понимаю, как только экземпляр BackgroundWorker выполняет задачу, он занят этой фоновой задачей и, следовательно, делает ее недоступной для других. Хотя, возможно, я ошибаюсь, но в любом случае я бы поступил именно так, поскольку ваш обработчик событий DoWork () может делать только то, что от него требуется для этого BackgroundWorker. Поэтому мне кажется невозможным выполнять совершенно разные задачи только для одного экземпляра BackgroundWorker.

Это помогает?

2
ответ дан 7 December 2019 в 14:31
поделиться

Вкратце:

Преимущества одного BackgroundWorker:

  1. Вы контролируете порядок выполнения для множественного метода . Однако это также является недостатком, поскольку, если вы используете несколько BackgroundWorkers, вы «предполагаете», что они выполняются параллельно, и вам не нужно беспокоиться о порядке;

  2. Меньше накладных расходов на создание и удаление потоков (если возможно, используйте один и тот же экземпляр каждый время, но это не всегда возможно, в зависимости от того, что запускает процесс. Это невозможно, если вы хотите, чтобы это выполнялось одновременно);

  3. Если вы хотите взаимодействовать между потоками, вы можете накапливать пакетное взаимодействие и делать это более эффективно . Более того, это может сэкономить вам часть этой коммуникации, если все методы выполняются в одном потоке.

Преимущества использования нескольких BackgroundWorkers:

  1. Вышеупомянутый параллелизм;

  2. Каждый конец процесса может использовать другой делегат и, следовательно, выполнять некоторые другие операции.

Надеюсь, это поможет!

2
ответ дан 7 December 2019 в 14:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: