If you were paying close attention as you went through the blog post on the root loop you may have noticed a little slight of hand. I may have been stung, but I'm not sure.
During the Open VI Reference video clip you may have noticed that as the Start Asynchronous Call by Reference and Wait on Asynchronous Call by Reference nodes were executing and I was opening context menus to show that the root loop didn't come into play that I skipped over the calendar popup on the time stamp control. Here is why:
From this test it looks like the calendar popup actually does interfere with execution of the Wait on Asynchronous Call node. FYI, this test was done in LabVIEW 2014, but I see the same results running it in LabVIEW 2013. Taking a look at the detailed help for that node we see:
Notice the last bullet point, this node should not require the user interface thread to execute, and in fact it doesn't for everything I have tested aside from the calendar popup. I don't know if this can be pinned on the root loop or not, in fact it is entirely possible that I am missing something simple here (chime in if you see it).
Something Simple (Kind Of)
Thoric noticed the something simple I was doing wrong and mentioned it in the comments below, I'm adding his observation to the blog post so that people don't miss his thoughts in the comments below. Here is what he noticed:
OK - try moving the Close Reference outside the final for loop. That changes things. It appears Close Ref is halted by the presence of the calendar dialog window. Not sure why yet...
It was a great observation and shows that the blocking has nothing to do with the Wait on Asynchronous Call node. We can instead show that the blocking happens while the close reference node is executing. Here is an updated video clip:
As Thoric suggested, I have moved the Close VI Reference node out of the for loop containing the Wait on Asynchronous Call node. There is no reason not to wire the array of VI references directly to the Close VI Reference node, I put it in a For Loop to make it easier to show that it is in fact being blocked by the calendar control. Why does the calendar control block the Close VI Reference node?
Jon McBee is a Principal Software Engineer at Cambridge NanoTech and is a Certified LabVIEW Architect, Certified LabVIEW Embedded Developer, Certified TestStand Developer, an NI Certified Professional Instructor, and a LabVIEW Champion