The time has come for you to start implementing multi-threaded code in your Delphi applications? The TThread class is too abstract for you? Why not take a look at some threading libraries for Delphi. Threading "wrappers" hide all the complexity from you and expose only what is just-enough for you not to runaway from synchronization and critical sections for data protection.
OmniThreadLibrary is a simple to use threading library for Delphi. OTL's main "selling" points (besides the prices, of course ;) are power, simplicity, and openess. With just few lines of code, you can set up multiple threads, send messages between them, process Windows messages and more. OTL doesn't limit you in any way - if it is not powerfull enough for you, you can ignore any part of its "smartness" and replace it with your own code.
With AsyncCalls you can execute multiple functions at the same time and synchronize them at every point in the function or method that started them. This allows you to execute time consuming code whos result is needed at a later time in a different thread. While the asynchronous function is executed the caller function can do other tasks.
Comes with Delphi. Hosted in the Classes unit. TThread is an abstract class that enables creation of separate threads of execution in an application. Create a descendant of TThread to represent an execution thread in a multi-threaded application. Each new instance of a TThread descendant is a new thread of execution. Multiple instances of a TThread derived class make an application multi-threaded.
The TBMThread is a native VCL component implementing everything you do need to create the thread and the synchronization, just dropping the component on the form.
The CSI Distributed Application Development Framework incorporates a multi-threaded architecture within a distributed application framework. All threads are implemented as threaded queues and inter-thread communication, both synchronous and asynchronous, is implemented through messaging. The major benefit of this approach is that it removes the requirement to use Windows synchronisation primitives as all message processing is private to each thread.