Как отобразить часы с текущим временем в приложении Windows Core IoT?

Я пытаюсь создать приложение IoT для Windows 10, работающее без головы на Raspberry Pi 2. Все настроено правильно, и я могу отлаживать свое приложение из Visual Studio, используя Raspberry Pi в качестве удаленного компьютера для отладки.

Теперь я хочу добавить часы на страницу приложения, но не могу понять, как обновлять отображаемое время. В простом старом C# я бы использовал BackgroudWorker или что-то подобное для сохранения текущего отображаемого времени, но этот тип недоступен в UWP.

Я изучал "Создание и регистрация фоновой задачи" в MSDN, но это кажется слишком сложным, просто чтобы иметь возможность обновлять время отображения.

Поэтому мой вопрос: как я могу - самым простым возможным способом - создать дисплей часов, который обновляется каждый раз, когда тикает время?

1 ответ

Решение

Если ваше приложение работает без заголовка, вам придется установить данные на устройство отображения (ЖК-дисплей, светодиоды и т. Д.). В приложении с заголовком вы будете использовать страницу XAML для отображения часов. Вы можете использовать таймер, чтобы получать уведомления каждый раз, когда происходит.

Объявление таймера

ThreadPoolTimer _clockTimer = null;

Таймер инициализации

_clockTimer = ThreadPoolTimer.CreatePeriodicTimer(_clockTimer_Tick, TimeSpan.FromMilliseconds(1000));

Таймерное событие

private void _clockTimer_Tick(ThreadPoolTimer timer)
{
    //Update your display. Use a dispatcher if needed
}

Справочная документация по ThreadPoolTimer

https://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.system.threading.threadpooltimer.aspx

Имейте в виду, что Raspberry Pi не имеет батареи для экономии текущего времени. Ваша доска должна будет синхронизироваться через Интернет, чтобы обновить дату и время.

Другие вопросы по тегам