On 11/08/2015 06:33 PM, Anthony Walter wrote:
2. If you want to communicate with the user interface, such as
refreshing the screen based on some calculations, use the Synchronize
method to do so
If you don't want to have the thread wait for the mainthread to execute
the event, use TThread.Queue (available only as of fpc 3.x) or
Application.QueueAsyncCall
3. Do not share data the thread is using in calculations with
anything. If you need access to the data in somewhere else, use
Synchronize and make a copy there.
If you want to transfer data from the thread to the main thread and
don't use TThread.Synchronize, you can use a TThreadList to create a
queue of sent data records, or create an object, use a procedure of same
in TThread.Queue or Application.QueueAsyncCall and do "Free;" as the
last instruction of that Procedure (making it a "finalizer")
-Michael
--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus