В дополнение к ответу CyberShadow , который действительно говорит вам, как исправить ваш код, я хотел бы отметить, что этот конкретный подход не является лучшим подходом для таймера.Помимо вероятности того, что условная переменная будет иметь больше смысла (в зависимости от того, что вы на самом деле делаете), Clock.currTime
- это неправильная используемая функция.
Clock.currTime
возвращаетвремя с использованием часов реального времени, в то время как время будет обычно более точным с монотонными часами.В случае часов, отличных от монотонных, время может зависеть от изменений часов (например, системные часы настраиваются демоном NTP на несколько минут).Однако монотонные часы всегда движутся вперед с одинаковой частотой, даже если системные часы настроены.Таким образом, это не очень полезно для получения времени, но идеально подходит для определения времени.Для этого вы хотели бы сделать что-то более похожее на это:
auto endTime = Clock.currSystemTick + to!TickDuration(dur!"minutes"(25));
do
{
//bla bla stuff
} while(Clock.currSystemTick < endTime);
Итак, вы в конечном итоге имеете дело с core.time.TickDuration
вместо std.datetime.SysTime
.Если вам не нужно фактическое время суток и вы используете его только в целях определения времени, тогда такой подход лучше.