Introducing MemBus: Construction Variants

I have used the “Conservative” class several times now. It is a concrete example of how to set up MemBus. Let us have a look at what it does:


  • A default publishpipeline is added by specifying a IPublishPipelineMember: It’s the sequential publisher which takes all resolved subscriptions and pushes the message to them
  • A resolver is added which stores subscriptions in a hash table, resolving them via the message’s Type.
  • A subscription shaper is associated with the subscribing activity. Its job will be to take care that a newly added subscription can be disposed.

There isn’t anything more you need to get a MemBus instance up and running. Compare this with a setup for a rich client (WPF or Windows Forms)


You will see 2 major differences:

  • A different publisher gets used. The ParallelBlockingPublisher will use several threads to publish a message, but will block until all subscriptions return (as opposed to the ParallelNonBlockingPublisher).
  • A task scheduler is added that can be used to ensure that receiving a message happens on a specific thread: An essential feature when programming multi-threaded in a rich client to ensure that UI changes happen on the UI thread.
Creative Commons License

Frank Quednau 2022