What is your main thread doing that's so important? Are you compute bound somehow on the main thread? Does it spend any time waiting? Did you call RunUserInterface() from the main thread? Are callbacks being executed? CVI does a ProcessSystemEvents() on return from a callback.
If you can somehow structure the main thread as an iteration (a loop), you could have the second thread acquire the data and post it to a common area, then read it from the main thread to update the control once per iteration. This is a "reader writer" problem, if the data isn't "atomic" (like an int or a double) you'd have to synchronize the read / write to preclude reading a partially written result.
If you are using the NI Delay() function, it has a built in ProcessSystemEvents() call that will allow a timer control to fire. SyncWait() will do this too I believe.
Hayes