I guess we need clarification from the OP. If this is something like a daemon that needs to run every 15 minutes, then cron is the answer. If this is a polling function within a session, then PSTimer might be the answer ... depending on platform. But, if the question here relates primarily to the idea of one session, i.e., the OP doesn't want to fire off a second session, then one is out of luck since the Progress AVM is inherently single threaded at this point.
Within a single session, the choice is between using something like PSTimer, if it works on your platform, which is going to interrupt the current processing flow, unless, of course, the current flow is in the middle of something uninterruptible, like a long-running query. Or, in managing one's own internal timer, i.e., check periodically to see if enough time has elapsed since the last operation. The latter, of course, depends on frequent checks and is not easily distributed through all the code, but it does work for checking for mail or something when at a menu.
Bottom line, though, doing it within a single session will be unreliable as to the exact time the next process happens. Does that matter?