Почему бы просто не использовать BackgroundWorker напрямую? Он предоставляет события для DoWork
, ProgressChanged
и RunWorkerCompleted
.
Преимущество этого (или тонкой обертки по сравнению с этим) заключается в том, что вы автоматически обрабатываете резьбу за вас, и она очень хорошо протестирована.
Если вы хотите обернуть это, я бы порекомендовал создать себе абстрактный класс, который инкапсулирует BackgroundWorker и позволит вам предоставить Action
делегатов для операции запуска.