I am planning the implementation of a Pipeline pattern as seen in this MSDN article. This is a WPF application for which I need to monitor progress of each stage of the pipeline in order to display it in the GUI.

Is it okay to implement each stage of a Pipeline with a BackgroundWorker? If not then why and what is/are the correct class/classes to use in order to support the pipeline pattern and also report progress to the GUI.

  • 1
    Just implement the pipeline on its own thread(s), and call Invoke() to post the progress to the GUI. If you want decoupling from the GUI, you can use an Observer pattern. Commented Apr 19, 2016 at 5:15
  • 1
    The reactive extensions library makes for a nice implementation of the observer pattern, start looking around at reactivex.io
    – Snoop
    Commented Apr 19, 2016 at 11:09

1 Answer 1


The article you linked to is using Tasks, you should should do that too, instead of BackgroundWorkder. There are many reasons why Tasks are preferable, Stephen Cleary has a series of articles explaining why.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.