Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: Pascal
Expertise: Beginner
Mar 19, 1997

How to interrupt the execution of a threaded process

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 out of the loop and immediately call Terminate. This sets the Terminated flag to true. Following the loop you should check the Terminated status in the body of 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 thread function. That will "kill" the thread. In either case, the most important thing you have to remember is to free resources that you use during the course of the run. If you don't they'll stay there and occupy memory.
DevX Pro
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date