Okay, if you have a UI thread that pumps messages, then the easiest
way to perform an operation after a delay is to set a timer.
But let's say you don't have a UI thread that you can count on.
One method is to burn a thread:
Less expensive is to borrow a thread from the thread pool:
But both of these methods hold a thread hostage for ...