Your requirements are contradictory. If a program is not running, there's no way for it to monitor anything. Putting a small delay inside of a while loop usually solves the problem of a VI using too many of a pc's resources. Try this test. Create a shile loop and just a stop button and look at CPU usage when it's running. Then put a Wait (ms) function inside the loop and use a small number like 5 for the input. The difference in CPU usage should be huge.