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.
If you require a non-blocking method for determining if an another VI is still running, you can:
- Use the Wait on Asynchronous Call function in a parallel operation to your main code.
- When the Wait on Asynchronous Call function returns, set a Boolean flag to True. This can be achieved through a Functional Global Variable (FGV).
- You main code can continuously read the Boolean flag in the FGV to determine when the Wait on Asynchronous Call function has returned without blocking your code execution.
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).