True, but a heartbeat- assuming that it wasn't too fast- would still be a convenient way to break fpSelect() with an infinite timeout.
What I'll probably do as an ad-hoc solution is put say a 100 mSec timeout in the fpSelect(), and poll the underlying database library to see if there's a notification. Later on I'll investigate getting a handle.
This would have the advantage that it would give access to the message dispatch code which will be identical. If I had a second thread or relied on the Lazarus component (which didn't exist the last time I did this sort of thing) I'd probably have to start messing around with critical sections.
MarkMLl