1) Что именно вы имеете в виду? Удалить "doWorkHandler"?
Если это так, вам не нужно это делать (насколько я знаю).
Точно так же, как сказал Ale , вам просто нужно это повторно использовать ту же BGW.
Но если бы использовал , я бы не пошел по этому пути.
Просто мой способ реализации, но для bgw я бы придерживался переменной, содержащейся в классе.
2) Доступ будет работать в обоих направлениях (общее использование). «Лучше» использовать «s», но вам придется вводить все, чтобы код стал сложнее для чтения.
Лично я бы вместо объявления "s" использовал объявление переменной (прямой доступ).
Теперь есть что-то новое.
Посмотрите на библиотеку задач.
Может быть, это очень удачный способ (я обнаружил, что во многих случаях это лучше и проще, чем использование Background Worker).
А также вы можете создавать параллельные задачи =)