2011-03-21 56 views
1

我正在創建一個練習應用程序,每隔幾秒鐘播放一次聲音,並且按下按鈕時,它會減少聲音播放的時間間隔。例如,在開始時它每15秒播放一次聲音,當我按下按鈕時,現在應該每隔10秒播放一次聲音。基本上每次用戶按下按鈕時,間隔減少5秒。所以我在我的類的頂部有一個DispatcherTimer,並在頁面加載時創建它的間隔和Tick方法。我在時間跨度中也有一個int變量。單擊按鈕時加速DispatcherTimer

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

如果這是你的實際代碼,那麼拉里是非常正確的... 你必須在開始第二個之前致電timer.stop();。 也給一些條件,以便禁止interval < 0

2

在開始秒鐘之前,您是否取消第一個調度程序計時器?第一次點擊後有可能是兩個調度計時器發射?