Ускорение DispatcherTimer при нажатии кнопки - PullRequest
1 голос
/ 21 марта 2011

Я создаю тренировочное приложение, которое воспроизводит звук каждые несколько секунд, и при нажатии кнопки уменьшается временной интервал для воспроизведения звука. Например, при запуске он воспроизводит звук каждые 15 секунд, а когда я нажимаю кнопку, он должен воспроизводить звук каждые 10 секунд. Обычно каждый раз, когда пользователь нажимает кнопку, интервал уменьшается на 5 секунд. Так что у меня есть DispatcherTimer в верхней части моего класса и создал его интервал и метод Tick, когда страница загружается таким образом. У меня также есть переменная int для секунд в промежутке времени.

DispatcherTimer timer = new DispatcherTimer();
int interval = 15;

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
        timer.Interval = new TimeSpan(0, 0, interval);
        timer.Tick += new EventHandler(timer_Tick);
        timer.Start();
}

void btn_Click(object sender, RoutedEventArgs e)
{
        Button btn = sender as Button;

        interval -= 5;

        timer = new DispatcherTimer();
        timer.Interval = new TimeSpan(0, 0, interval);
}

Но это заставляет звук играть безумно. Есть ли правильный способ сделать это?

Ответы [ 2 ]

2 голосов
/ 21 марта 2011

если это ваш настоящий код, тогда Ларри совершенно прав ... вам нужно позвонить timer.stop();, прежде чем начинать второй.также дать некоторые условия, чтобы запретить interval < 0

2 голосов
/ 21 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...