Hi Pacsoft,
To address your CVI specific questions, in general CVI invokes UI callbacks in the same thread that created the panel. Typically a program's main thread controls all
the UI elements by 1) loading or creating the panel(s), 2) displaying
them, and 3) running a message processing loop (RunUserInterface, or a
loop with ProcessSystemEvents). While a program executes in a callback function or in code that doesn't call RunUserInterface or GetUserEvent, CVI does not process system events and thus can't update the UI (which you mentioned seeing when callbacks take a long time). If a particular
function is overly time-consuming, it essentially "locks out" user
interface updates. To allow CVI to process these updates,
you can use calls like ProcessDrawEvents, ProcessSystemEvents, etc.
Just thought I would throw the CVI stuff out there.
Best Regards,
Jonathan N.
National Instruments