Generally, using the abort method is not "nice", imho. This can have undesirable consequences if it leaves references open, for example. Your main VI could do something else like set an occurance,global variable, semaphore, notifier, or other synchronization function that is monitored in your subVI. Add the synchronization function to your subVI and monitor it in any while loop that you might need to terminate early. That way you can take the clean up actions you need to do. There's a couple shipping examples that you might want to look at. One is Semaphore with SbuVIs.vi and the other is Notifier BASICS Part 2.vi.