Wes,
Apart from calling a VI as a sub-vi you can use VI Server to call another VI. The VI you are calling can be on the same machine or could be called remotely from another machine.
There are a few examples on using VI Server you may find helpful. If you go to the Resource Library in NI Developer Zone http://zone.ni.com/libraries/ and then go to LabVIEW-Connectvity-VI Server you should find quite a few examples.
One that is pretty simple and useful is titled - Programmatically Opening and Running One VI from Another Using VI Server
In the diagram of the This.vi you'll see that there is an invoke node that is calling a Run VI method, the parameter for the method is Wait Until Done. By setting this to true you can ensure that the VI you are calling completes executi
on before the next VI (with flow being controlled through the error cluster) executes. If you set it to false the VI will go off and run and you can continue doing things independently.
Do be careful in case you are getting into situations where you might be calling the same VI again before the previous call has completed. If that is a possibility mark the VI as re-entrant, this is wether you're using VI server or just calling the same sub-vi multiple times in another VI. If you don't set the VI up to be re-entrant you run the risk of the same data space being used for different calls.
Regards,
Kamran