Windows Phone 8.1 фоновый таймер для остановки музыки
Здравствуйте, как часть приложения, которое играет расслабляющую музыку в фоновом режиме, используя BackgroundMediaPlayer
Я хотел бы реализовать способ выключения музыки через определенное время..
Я думал о том, чтобы иметь TimerPicker
чтобы пользователь мог выбрать, когда музыка должна остановиться, а затем добавить таймер в качестве поддерживаемого типа задачи в мой MusicBackgroundTask в разделе объявлений в appxmanifest.
Тогда правильно каким-то образом используйте ThreadPoolTimer
в моем MusicBackgroundTask Windows Runtime Component, чтобы остановить музыку, когда она тикает, но я действительно не могу найти где-нибудь в Интернете, где объясняется, как заставить таймеры работать в фоновом режиме.
Так что если у кого-то есть хорошая ссылка, которая объясняет или лучше какой-то рабочий код, это было бы очень полезно, большое спасибо..
1 ответ
Вот пример MSDN, который показывает IBackgroundTask
реализация с использованием ThreadPoolTimer
(см. SampleBackgroundTask.cs): http://code.msdn.microsoft.com/windowsapps/Background-Task-Sample-9209ade9/sourcecode?fileId=43572&pathId=498327315
Одна потенциальная причина этого не работает, если вы не сохранили ссылку на объект, возвращенный из IBackgroundTaskInstance.GetDeferral()
что заставит вашу фоновую задачу завершиться преждевременно после IBackgroundTask.Run
возвращается. Приведенный выше пример делает это, и я полагаю, что это также необходимо для того, чтобы задание BackgroundMediaPlayer Audio продолжало воспроизводить музыку, поэтому я был бы удивлен, если у вас его еще не было.
Наконец, тип задачи "Таймер" в вашем MusicBackgroundTask
объявление в файле appxmanifest не повлияет на использование вами ThreadPoolTimer
, Тип задачи "Таймер" - разрешить IBackgroundTask
точка входа для запуска TimeTrigger
а также MaintenanceTrigger
триггеры.