我创建的练习应用程序每隔几秒钟就会播放一次声音,按下按钮会缩短播放声音的时间间隔。例如,在开始时它每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);
}
但是这让声音疯狂起来。有没有正确的方法来做到这一点?
答案 0 :(得分:2)
在开始第二个调度程序计时器之前是否取消了第一个调度程序计时器?是否有可能在第一次点击后你有两个调度员定时器触发?
答案 1 :(得分:2)
如果这是你的实际代码,那么拉里是非常正确的...... 你必须在开始第二次之前调用 timer.stop();
。
也给出一些条件,以禁止interval < 0