[Lazarus] animated splash screen for lengthy operation, works with windows, doesn't with linux

Luca Olivetti luca at wetron.es
Mon Mar 27 16:06:04 CEST 2023


El 27/3/23 a les 15:40, Mattias Gaertner via lazarus ha escrit:

>>
>> procedure ExecWithSplash(AProc:TThreadProc);
>> var wf:TWaitForm;
>>       ut:TExecInThread;
>> begin
>>     Wf:=TWaitForm.Create(Application);
>>     WF.Show;
>>     ut:=TExecInThread.create(AProc);
>>     while not ut.Finished
>>       Application.ProcessMessages
>>     wf.free;
>>     if ut.FatalException<>nil then
>>       raise(ut.FatalException);
>>     ut.free;
>> end;
>>
>>
>> The problem here is, if AProc raises an exception, I cannot free the
>> thread causing a leak.
> 
> What does TExecInThread.Execute do?

As I said, it just calls AProc (which the constructor stored in FProc)


procedure TExecInThread.Execute;
begin
   FProc()
end;

constructor TExecInThread.create(AProc:TThreadProc);
begin
   FProc:=AProc;
   inherited create(false);
end;


Bye

-- 
Luca Olivetti
Wetron Automation Technology http://www.wetron.es/
Tel. +34 93 5883004 (Ext.3010)  Fax +34 93 5883007



More information about the lazarus mailing list