If I understood your code right, this loop never terminates if the stopwatch doesn't work correctly on this VM.  We never increment cpuTimeChanges because readout always returns 0, and interimTime is always below longTaskBoundary.