Setting up a communication channel
The biggest problem of TThread
is that it only allows communication to flow from a background thread to the owner. As you’ve seen in the previous chapter, we can use different mechanisms for that – Windows messages, Synchronize
, Queue
, and polling. There is, however, no built-in way to send messages in a different direction, so you have to build such a mechanism yourself. This is not entirely trivial.
Another problem with built-in mechanisms is that they make for unreadable code. Synchronize
and Queue
are both inherently messy because they wrap code that executes in one thread inside code executing in a different thread. Messages and polling have a different problem. They decouple code through many different methods, which sometimes makes it hard to understand a system.
To fix all these problems (and undoubtedly introduce some new ones as, sadly, no code is perfect), I have built a better base class, TCommThread
. You can find...