User events are thread-specific: they are sent in the thread that creates the panel, which means that you have to call GetUserEvent / RunUserInteface / ProcessSystemEvents in that same thread. If you call GetUserEvent in your secondary thread, that will only dispatch events that are queued for the secondary thread (probably, none).
The question is, what is the main thread doing while the secondary thread is performing the measurements? It is in the main thread that you have to manage the events.
Luis