<div dir="ltr"><div class="gmail_extra">I use a four method pattern with threads, while reusing the same thread class everywhere.</div><div class="gmail_extra"><br></div><div class="gmail_extra">1) define a status method to update your user interface based on feedback from the thread</div><div class="gmail_extra">2) define a terminate method to do clean up when a thread finishes</div><div class="gmail_extra">3) define a work method where the thread does its execution</div><div class="gmail_extra">4) define a method which starts the thread feeding it all three methods above</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">procedure TReplaceForm.ThreadStatus(Sender: TObject);</div><div class="gmail_extra">begin</div><div class="gmail_extra">  Caption := FThread.Status;</div><div class="gmail_extra">end;</div><div class="gmail_extra"><br></div><div class="gmail_extra">procedure TReplaceForm.ThreadTerminate(Sender: TObject);</div><div class="gmail_extra">begin</div><div class="gmail_extra">  FThread := nil;</div><div class="gmail_extra">end;</div><div class="gmail_extra"><br></div><div class="gmail_extra">procedure TReplaceForm.ThreadExecute(Thread: TSimpleThread);</div><div class="gmail_extra">begin</div><div class="gmail_extra">  Thread.Status := 'Step 1';</div><div class="gmail_extra">  Sleep(1000);</div><div class="gmail_extra">  Thread.Status := 'Step 2';</div><div class="gmail_extra">  Sleep(1000);</div><div class="gmail_extra">end;</div><div class="gmail_extra"><br></div><div class="gmail_extra">procedure TReplaceForm.ReplaceButtonClick(Sender: TObject);</div><div class="gmail_extra">begin</div><div class="gmail_extra">  if FThread = nil then</div><div class="gmail_extra">    FThread := TSimpleThread.Create(ThreadExecute, ThreadStatus, ThreadTerminate);</div><div class="gmail_extra">end;</div><div class="gmail_extra"></div><div class="gmail_extra">And done. You never have to define your own TThread derived class again.</div></div><div class="gmail_extra"><br></div></div>