我有一个需要每分钟检查一次数据库表的应用程序。该表按时间索引,因此应用程序需要每分钟运行此检查。
最好的方法是什么?我可以创建一个后台工作线程,但是如果我在每次检查后将其设置为休眠60秒,那么由于调用支票的开销,我最终会错过一分钟。
我记得我检查然后检查的那一刻,每隔15秒说一次,如果分钟已经改变,则执行检查。
或者我应该使用其他方法吗?
我正在使用WPF,VS2008和VB.NET
TIA,
西蒙
答案 0 :(得分:35)
DispatchTimer就是你所追求的 - 只需设置你想要的间隔,然后将一个方法附加到Tick事件 - 就可以了。
答案 1 :(得分:29)
正如MrTelly所说,DispatcherTimer就是这样做的方法。它与Dispatcher队列紧密集成,并确保您的回调在正确的线程上。以下是关于这门课的一些好文章。下面的一些示例代码详细介绍了一个基本示例:
// DispatcherTimer setup
dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0,0,1);
dispatcherTimer.Start();
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
// Updating the Label which displays the current second
lblSeconds.Content = DateTime.Now.Second;
// Forcing the CommandManager to raise the RequerySuggested event
CommandManager.InvalidateRequerySuggested();
}
答案 2 :(得分:1)
不确定WPF,但在WinForms中,有一个Timer控件。如果没有,则一种方法是以下循环: