Hi BigBen,
I just had the chance to download and look at your .zip.
Have you tried using virtual channels yet?
The example you provided is repeatedly creating IVI sessions and then closing them. There has been talk about memory used for references not being free'd-up when released. How about building an array before you enter your main loop that has the four IVI references you need to pass to the read fucntion. Inside the loop, iterate through each of IVI references passing them to the read function as you go. Then close all of the references only after everything is done and the codes is ready to exit.
If the freeing-up is the issue, you may be able to duplicate the problem without doing the actual read. Just put a case around t
he read and wire a constant to keeps the read from occuring. If the problem still occurs try the scheme I mentioned above.
Just trying to help.
Ben