Couldn't we achieve this using taking snapshots? DateTime startTime = DateTime.UtcNow;

while ((DateTime.UtcNow - startTime) < timeSpan. Although I guess a Stopwatch does implement basically the same thing