Это функционально эквивалентно:
while(now < finishTime);
Кажется, что оно будет работать правильно.Всякий раз, когда он достигает 0, текущее время равно finishTime, и всякий раз, когда он достигает 1, текущее время больше, чем finishTime.В любом случае цикл закончится.
Лучшим способом будет:
while(DateTime.Now < this._finishTime)
Это не имеет значения для TimeOfDay
, что создает проблему, возникающую изо дня в день (как отметил @AakashM в комментариях).