 <p><strong>Main thread</strong></p> <ol> <li>Create an event. For instance, <code>TSimpleEvent</code> will suffice for your needs.</li> <li>Set the event to be non-signaled. For <code>TSimpleEvent</code> that's a call to <code>ResetEvent</code>. I expect that a newly minted <code>TSimpleEvent</code> would be in the non-signaled state, but off the top of my head I cannot remember that detail.</li> <li>Create the thread, passing the event in the constructor.</li> <li>Wait for the event to become signaled. For <code>TSimpleEvent</code> that means calling <code>WaitFor</code>.</li> </ol> <p><strong>Worker thread</strong></p> <ol> <li>Make a note of the event passed to the thread's constructor.</li> <li>At the start of the thread execution, signal the event. For <code>TSimpleEvent</code> that means calling <code>SetEvent</code>.</li> </ol>