On Thu, Aug 08, 2013 at 12:15:44PM +0100, Lukasz Sokol wrote: > but I would then need to make the wrapper object aware of the Application > or its forms then? > > I wanted the wrapper unit to be as self-contained as much as possible, > (so the callback function is defined in a unit that only has Classes, > SysUtils and dynlibs as uses, > i.e. no Forms. Controls or Graphics) > but still be thread-safe w/r/t to where the wrapper object is created > (within a GUI form or /not/)
Create an event in your wrapper class and make sure that it's documented that this event will be called from a thread. Then if you use this wrapper class from a gui app, you can use Application.QueueAsyncCall or PostMessage in the event handler. If you use the wrapper from a command line app, you'll have to use a thread-safe queue that you query from time to time in the main thread of the app, or build it into your event loop, if you have one. Henry _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal