|The top-level sink must
somehow interrupt the application to tell it that data is ready. Here the
Controller object, which is the handler of Windows messages in an
object-oriented implementation of Window Procedure, acts as a top-level sink.
It posts a user-defined message, which will be picked by the main thread at
the more opportune moment. Notice, this method is executed by a worker
thread, not the main Windows thread. Access to the message queue is
synchronized by Windows.