I am playing with a small app that pulls info from a database into a
Win32::GUI::Grid
. A GUI event triggers the SQL query, which may take several seconds to complete on large table/slow link.
Unfortunately, if I make another GUI event in the mean time, triggering another SQL query, the two get confused; The share a single
DBI
handle, create their own statement handles which execute in paralell. So far so good. Unfortunately, they both populate the same Win32::GUI::Grid and thus stomp all over each other.
I have tried using a global variable to "signal" the first event handler to abort when a second is called, but the first handler does not see the variable change. Perhaps they run as separate threads, I don't really know...
I imagine this is a fairly common pitfall when it comes to GUI programming, so what's the proper way to solve this?