最近在做一个LeapMotion的作业,由于自带的Listener对的Frame刷新识别速度太快,所以需要实现一个功能:每隔一段时间(自己定义)来调用识别新的Frame的函数。其实有一个InVoke(.....)的方法可以实现这种功能,但是自己用不好,里面的参数让人头疼。实现这种功能的方法肯定有很多种,我最终选择了Timer(定时器),这个的难易程度在我可接受的范围内呀。但是问题又出现了,我的工程中引入了System.Windows.Forms.Timer、System.Timers.Timer、System.Threading.Timer类。每个类中都包含各自的Timer,vs报错有冲突。最终选择了Forms下的,代码如下:
System.Windows.Forms.Timer tm = new System.Windows.Forms.Timer();
private void ThisAddIn_Startup(object sender, System.EventArgs e)//程序开始
{
tm.Tick += new EventHandler(tm_Tick);
tm.Interval = 1000;//定义每隔1000ms调用tm_Tick函数
tm.Start();
}
void tm_Tick(object sender, EventArgs e)
{
........
}
这样就实现功能了。
那么三种Timer有什么区别呢?
1、System.Windows.Forms.Timer :http://msdn.microsoft.com/zh-cn/library/system.windows.forms.timer.aspx
2、System.Timers.Timer:http://msdn.microsoft.com/zh-cn/library/system.timers.timer.aspx
3、System.Threading.Timer:http://msdn.microsoft.com/zh-cn/library/system.threading.timer.aspx
三种Timer的作用都是“提供以指定的时间间隔执行方法的机制“,不同点就在于线程的问题,对于我们目前的程序来所winForm下的Timer就足够了。可以看看这篇文章:
http://blog.csdn.net/dragonpeng2008/article/details/8099771