我需要一个定时器,在5秒后将我重定向到另一个页面,问题是它每隔5秒将我重定向到这个页面,所以我需要停止它。如果我在tmr.Start()
之后停止它它没有执行该事件。如何在事件OnTimerTick
?
DispatcherTimer tmr = new DispatcherTimer();
tmr.Interval = TimeSpan.FromSeconds(5);
tmr.Tick += new EventHandler(OnTimerTick);
tmr.Start();
void OnTimerTick(object sender, EventArgs e)
{
NavigationService.Navigate(new Uri("/lvlSet1/s1lvl3.xaml", UriKind.Relative));
}
答案 0 :(得分:4)
两种可能的解决方案。
DispatcherTimer
实例,而不是在您的方法中创建。然后,您可以使用OnTimerTick
方法访问它们。 DispatcherTimer
方法将发件人转换为OnTimerTick
。 <强> 1。溶液强>
public class YourClass
{
DispatcherTimer tmr = new DispatcherTimer();
public void YourMethodThatStartsTheTimer()
{
tmr.Interval = TimeSpan.FromSeconds(5);
tmr.Tick += new EventHandler(OnTimerTick);
tmr.Start();
}
void OnTimerTick(object sender, EventArgs e)
{
tmr.Stop();
NavigationService.Navigate(new Uri("/lvlSet1/s1lvl3.xaml", UriKind.Relative));
}
}
<强> 2。溶液强>
void OnTimerTick(object sender, EventArgs e)
{
((DispatcherTimer)sender).Stop();
NavigationService.Navigate(new Uri("/lvlSet1/s1lvl3.xaml", UriKind.Relative));
}
答案 1 :(得分:1)
尝试像这样构建代码。是将您的计时器对象保留在范围内,以便在第一次滴答发生后停止它。
class SimpleExample
{
DispatcherTimer timer;
public SimpleExample()
{
timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(5);
timer.Tick += new EventHandler(OnTimerTick);
}
public void SomeMethod()
{
timer.Start();
}
void OnTimerTick(object sender, EventArgs e)
{
timer.Stop();
NavigationService.Navigate(new Uri("/lvlSet1/s1lvl3.xaml", UriKind.Relative));
}
}