I always do any idle looping with timers, for the specific reasons you've outlined. Since you'd like (or need) to do this in a different way, what is the purpose of the idle loop? Are you waiting for a signal? I haven't coded in VB before, but I assume that most of the API calls I have available in Delphi (and therefore techniques) will also be available to you.
_________________________
-Jeff
Rome did not create a great empire by having meetings; they did it by killing all those who opposed them.