I am going to second Steve's remarks. It would be helpful if you could upload an example vi. As far as a timer goes, there are tons of ways to do that. One way is to make a while loop that spins for whatever amount of time, and then returns. Another way is to just use a wait, or Wait Until Next ms Multiple to control timing. I don't recommend either of these ways, even though they are very simple to implement. In both of those cases, the loop that is executing the wait is frozen until the wait completes (so if you tried to stop the vi by pressing a button, it couldn't end until the wait was over).
I think it's better to get a current timestamp, and then add your desired wait time to it, and then in each iteration of your loop, check to see if the current time is greater than your time-plus-wait to trigger whatever you want to happen. Of course, this is only decently accurate if your loop time is fairly small. In this way, if you press a stop button, your vi can immediately respond. Let's see an example and try to put together a good solution for you.
As far as using while loops in subvi's, remember that there are lots of ways to stop a while loop; a control input isn't the only way. Also, if you want to, you can make a subvi display it's own front panel that you can interact with.
Chris