Also, think about what will happen if the user suspends the computer when your code is sleeping, and wake it up 2 days later? What if the user has the OS set to automatically sync network time, and system time actually jumps back? Make sure your code won't crash/hang in those situations (think about calculations overflowing, wrapping around, etc).