[Lazarus] TThread.Synchronize

Michael Van Canneyt michael at freepascal.org
Wed Oct 26 08:31:25 CEST 2016

On Wed, 26 Oct 2016, LacaK via Lazarus wrote:

>>>> Check for Application.ProcessMessages and CheckSynchronize calls. 
>>>> These process synchronize queue, if I am not mistaken.
>>> I do not call CheckSynchronize nor ProcessMessages in my application.
>>> So only any LCL component or widget set can call it in background ?
>> ShowModal() for a modal form will call it.
> Ah really?
> It happens in my application!

Then that is  your problem.

> But is it correct behavior ? IMO it is against thread safety, which 
> should Synchronize guarantee!

The two issues are completely unrelated. The current behaviour is correct.

Nowhere is it stated or guaranteed that synchronisation cannot happen in a GUI event
handler. Any code at any time can call the GUI message loop. A modal form is
just one instance. Your code must be able to deal with this.


More information about the Lazarus mailing list