WP7 динамически обновляет пользовательский интерфейс без блокировки потока

#c# #silverlight #windows-phone-7

#c# #silverlight #windows-phone-7

Вопрос:

Я создаю что-то вроде приложения для караоке, где мне нужно связать текстовые данные с отметками времени со звуковыми данными. У меня есть 2 списка для указания начала и конца временных интервалов звука и индексов текстовых строк. Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как обновить свойство highlighted text на основе current media element's POSITION .

У WP7 нет события достижения маркера ( которое есть у silverlight ). Итак, я рассматривал возможность использования DispatcherTimer. проблема в том, что ticks нужные мне параметры неоднородны, и если я буду обновлять interval свойство каждый тик, точность таймера сильно упадет, поскольку положение элемента мультимедиа и тик таймера довольно легко не будут синхронизированы.

Есть идеи, как я могу создать свое событие, подобное MarkerReached событию элемента Media? Спасибо-Egon

Ответ №1:

Я предполагаю, что у вас есть некоторая форма структуры данных, которая сообщает вам, где находятся маркеры в аудиопотоке, так почему бы не использовать DispatcherTimer с фиксированным интервалом (скажем, 500 миллисекунд) и просто проверить эту структуру данных, чтобы увидеть, достигли ли вы маркера?

Комментарии:

1. разрядка аккумулятора: (хотя вы правы, блокировки пользовательского интерфейса и других неприятных эффектов удается избежать.

2. Я открыт для альтернативных предложений 😉