Forum > Windows

Synchronize() seems to not work in Total Commander plugin

(1/2) > >>

CudaLister is a adapt of 'CudaText' as the Total Commander plugin. Ie DLL for Windows x32/x64.
I have 2-threads work, 2nd thread calls Synchronize().
I see in the debugger, that Synchronize() call don't give the effect! ie, the param (function) is not callled at all, ie breakpoint in that function don't work.

Is this a known issue?

Free Pascal Compiler version 3.3.1-9667-g222a41be7b [2021/11/28] for i386

I assume you are using LCL. If so, you must periodically call Application.ProcessMessages method in main thread.
If you are not using LCL then you must periodically call procedure CheckSynchronize, also from the main thread.

Is it (need to call ProcessMessages in LCL) needed only for DLL? or for any task? In the usual app, I don't do it.
In the DLL, I don't too.

The DLL library has its own message queue (handled by TApplication) that is not tied to the main application queue. To process messages from the TApplication queue in the DLL library, you must periodically call Application.ProcessMessages.

Of course, you don't need to do this in a regular LCL app.

Great! It helped me.


[0] Message Index

[#] Next page

Go to full version