In delphi XE I can use the start procedure, but this method does not exist in delphi 2007.
This sample code works ok in delphi xe, using Start
MyThread
There is nothing wrong with calling Resume on a thread that was created with the CreateSuspended parameter set to true in the constructor. (Why else would there be a CreateSuspended parameter after all?)
However, the real trouble comes in when you suspend/resume a running thread. Mainly this is due to references to open resources, such as COM objects. (For example, if you have an ADO connection object active, and a query running...it's not very ideal to suspend that thread and try to resume it later... it's obviously just not always going to work out well for you or the database connection in that scenario.)
If you are careful with your external references, then suspending/resuming a running thread becomes much safer, except for the possible race conditions that can crop up...but those are answers for many other questions...