В настоящее время я делаю небольшое приложение таймера для Windows Phone 7 с возможностью регистрации данных, чтобы люди могли видеть, сколько времени они потратили на выполнение задачи в определенный день.
Они должны иметь возможность закрыть приложение, отвечать на телефонные звонки и т. Д., И приложение, как представляется, продолжает считать (поскольку в WP7 для сторонних разработчиков нет многозадачности). В настоящее время я делаю это, сохраняя время последнего обновления таймера и вычисляя разницу между временем.
Сейчас у меня есть следующий код, который выполняется при обновлении таймера (каждую секунду / при активации приложения):
TimeSpan tempNowLastDiff = DateTime.Now - LastUpdateTime;
CumulativeTime += tempNowStartDiff;
LastUpdateTime = DateTime.Now;
Проблема в том, что если пользователь выходит из приложения и меняет часы, при повторном запуске приложения значение CumulativeTime перестает быть точным. Если я перевожу часы назад, это может привести к отрицательному интервалу времени, если я переверну часы вперед, это может привести к чрезмерно положительному времени.
Единственное решение, которое я могу придумать, это 0 разности, если tempNowStartDiff отрицателен, и просто предполагать, что задание выполнялось в течение 24 часов каждый день, если положительно (что возможно, если, скажем, они отправляются в поездку).
Есть ли способ получить абсолютное время, которое не будет зависеть от изменения времени телефона?
Если нет, есть ли способ проверить, изменилось ли время и на сколько?
Редактировать: Я загрузил копию кода таймера здесь с инструкциями о том, как повторить проблему.