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

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

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

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

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


person Nicklas Møller Jepsen    schedule 02.01.2016    source источник


Ответы (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 нет батареи для сохранения текущего времени. Ваша доска должна будет синхронизироваться через Интернет, чтобы обновить дату/время.

person danvy    schedule 03.01.2016