Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
type
TMyThread = class(TThread)
private
FActive: Bool;
FSomeList: TStringList;
procedure SYNC_Something;
procedure SYNC_Started;
procedure SYNC_Stopped;
procedure SetActive(const Value: Bool);
protected
procedure Execute; override;
public
constructor Create;
destructor Destroy; override;
property Active: Bool read FActive write SetActive;
end;
constructor TMyThread.Create;
begin
inherited Create(True); //You practically always need to pass 'True' because 'False' is just meaningless...
FSomeList:= TStringList.Create;
Resume; //Now that everything is created, we officially start the thread.
end;
destructor TMyThread.Destroy;
begin
FActive:= False; //Make sure our process is stopped...
WaitFor; //Wait for the process to stop before we continue freeing things...
FSomeList.Free;
inherited;
end;
procedure TMyThread.SetActive(const Value: Bool);
begin
//Not necessary to be a procedure setter, but you might want to do some preparation at this point...
FActive:= Value;
end;
procedure TMyThread.Execute;
var
X: Integer;
begin
//Everything done inside here, and any procedures called from inside here, are done from within this thread...
while not Terminated do begin //Keep looping at all times until thread is terminated...
if FActive then begin //Should this thread be doing something?
Synchronize(SYNC_Started);
//START threaded code
FSomeList.Clear;
for X := 1 to 1000 do begin
FSomeList.Append('Some Random Text');
Synchronize(SYNC_Something);
end;
//END threaded code
Synchronize(SYNC_Stopped);
end else begin
Sleep(1); //This keeps the thread from going crazy and maxing the processor...
end;
end;
end;
procedure TMyThread.SYNC_Something;
begin
//Now we can do something which accesses the outside of the thread
//This would presumably trigger an event notifying the main thread that something has been done or needs to be done
end;
procedure TMyThread.SYNC_Started;
begin
//Now we can do something which accesses the outside of the thread
//This would presumably trigger an event notifying the main thread that this thread has begun its work
end;
procedure TMyThread.SYNC_Stopped;
begin
//Now we can do something which accesses the outside of the thread
//This would presumably trigger an event notifying the main thread that this thread has finished its work
end;