我该如何在WPF中创建一个计时器?

91

我是WPF中timer的新手,需要一个每5分钟弹出一个消息框的代码,请问有人可以帮忙提供一个简单的timer代码吗?

这是我目前尝试过的:

System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer(); 
private void test() 
{ 
    dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); 
    dispatcherTimer.Interval = new TimeSpan(0, 0, 1); 
    dispatcherTimer.Start(); 
} 
private void dispatcherTimer_Tick(object sender, EventArgs e)
{ 
    // code goes here 
} 

private void button1_Click(object sender, RoutedEventArgs e)
{ 
    test(); 
} 
2个回答

192

在WPF中,您使用DispatcherTimer

System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0,5,0);
dispatcherTimer.Start();


private void dispatcherTimer_Tick(object sender, EventArgs e)
{
  // code goes here
}

4
在“//code goes here”处,写上“Messagebox.Show("message goes here");”。 - Rhys Towey

41

除了上述内容外,如果你需要将tick事件转发回UI线程,则可以使用Dispatch计时器。否则,我会使用System.Timers.Timer。


11
+1 是为解释与UI线程的相关性而点赞,这是在使用WPF时必须理解的关键要素。 - JamesHoux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接