Checking if an Asynchronously Called VI is Currently Running

Updated Dec 16, 2019

Reported In

Software

  • LabVIEW

Issue Details

  • I have dynamically called a VI using the Start Asynchronous Call node . How can I check if this VI is still running?
  • I am trying to check if an asynchronously called VI has finished by checking the Execution:State property of the dynamically called VI, but this always returns "Running".

Solution

After starting an asynchronous call to another VI using the Start Asynchronous Call node, you can pass the reference out of this to a Wait on Asynchronous Call function. This function will run until the called VI has finished. When using this function, you must set the "options" input to 0x100 (Hexadecimal) when the reference to the VI is first opened. An example of this is shown below:

Note: This image is a LabVIEW snippet, which includes LabVIEW code that you can reuse in your project. To use a snippet, right-click the image, save it to your computer, and drag the file onto your LabVIEW diagram.


The Execution:State property gives the current state of a VI. Querying this will only work if the VI is opened as a non-typed reference (when the type specifier VI Refnum input is unwired).

Additional Information

The Execution:State property will always return "running" if the VI is opened with the type specified as this reserves the VI for execution. As can be seen in the table below, this results in the VI appearing as "running" for as long as it is in memory.