[Lazarus] How to PostMessage to object?
Henry Vermaak
henry.vermaak at gmail.com
Thu Jun 9 12:10:46 CEST 2011
On 08/06/11 16:39, Henry Vermaak wrote:
> On 08/06/11 16:28, Krzysztof wrote:
>> Hm, I forgot about Application.QueueAsyncCall. And this can be safely
>> call from thread without TThread.Synchronize() ? Because I don't want
>> use Synchronize() in any part of thread code. So this is correct code? :
>>
>> procedure TMyThread.Execute;
>> begin
>> // <some code here>
>> Application.QueueAsyncCall(@SomeObj.TestMethod, PtrInt(NewStr('Some
>> value')));
>> // <some code here>
>> end;
>>
>> There is no chance for deadlock with main thread calling this from
>> inside another thread?
>
> You have to protect it with a critical section (if you have more than
> one thread calling QueueAsyncCall).
This will not even solve the problem, since the ProcessAsyncCallQueue
and RemoveAsyncCalls also need to be protected. Just use PostMessage
for thread communication.
More information about the Lazarus
mailing list