<div dir="auto"><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Luca Olivetti via lazarus <<a href="mailto:lazarus@lists.lazarus-ide.org">lazarus@lists.lazarus-ide.org</a>> schrieb am Mo., 27. März 2023, 10:34:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">El 27/3/23 a les 10:13, Jean SUZINEAU via lazarus ha escrit:<br>
> <br>
> Le 27/03/2023 à 09:46, Luca Olivetti via lazarus a écrit :<br>
>> procedure TUpdateThread.Execute;<br>
>> begin<br>
>>   while not Terminated do<br>
>>   begin<br>
>>     FWaitForm.ShowProgress;<br>
>>     Sleep(30);<br>
>>   end;<br>
>> end;<br>
> <br>
> Usually I use TThread.Synchronize to ensure that the graphic code is run <br>
> by the main thread.<br>
> <br>
> But it won't work if your main thread is blocking.<br>
<br>
Exactly<br>
<br>
> <br>
> May be you should do the inverse move the lengthy operation to a <br>
> separate thread and keep the main thread for the splash screen ?<br>
<br>
Yes, I usually do that, but in this case it's not possible (the lengthy <br>
operation is just a  TSQLQuery.open that I cannot delegate to a <br>
different thread).<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">You need to find a way then, because the GUI handling *must* be done in the main thread. </div><div dir="auto"><br></div><div dir="auto">Regards, </div><div dir="auto">Sven </div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
</blockquote></div></div></div>