Question:
I’ve read your previous answers and explanations about threads. I especially liked the plain-vanilla ones. But what I don’t see how to do is interrupt the execution of a threaded process. Say you fire up a long FOR loop, but you want to have a CANCEL button available to the user which will abort the loop. How do you do this?
Answer:
To exit a thread created with TThread mid-process (as in a loop), break outof the loop and immediately call Terminate. This sets the Terminated flag totrue. Following the loop you should check the Terminated status in the bodyof the Execute method; something like this:
procedure Execute;begin…some stuff while SomeCondition do begin …do some stuff if CancelFlagOfSomeSort then begin Terminate; Break; end; end; if MyTThread.Terminated then Exit;end;For plain-vanilla threads, all you have to do is exit out of the threadfunction. That will “kill” the thread.In either case, the most important thing you have to remember is to freeresources that you use during the course of the run. If you don’t they’llstay there and occupy memory.