title: Do I need TThreads? If so can I pause, resume and stop them?
body: <p>I've always wondered is there a better way that I should be writing some of my procedures, particularly ones that take a long time to finish.</p>
  
  <p>I have always run everything off the Main GUI Thread which I now understand and realise is bad because it will make the Application unresponsive, <code>Application.ProcessMessages</code> will not really help here.</p>
  
  <p>This makes me think I need to use TThreads for lengthy operations such as copying a file for example. This is also made me wonder how some Applications give you full control, eg allow you to pause, resume and or stop the operation.</p>
  
  <p>I have about 3 lengthy operations in a personal project I am working on which I display a dialog form with a TProgressBar on. Whilst this does work, I feel it could be done much better. These progress dialogs could be shown for such a long time that you may want to cancel the operation and instead finish the job later.</p>
  
  <p>As I said, currently I am running of the Main Gui Thread, do I instead need to use TThreads? I am not sure how or where to start implementing them as I have not worked with them before. If I do need threads do they offer what I need such as pausing, resuming, stopping an operation etc?</p>
  
  <p>Basically I am looking for a better way of handling and managing lengthy operations.</p>