在C ++ .net Timers中使用时,加号相等的符号是什么

时间:2012-11-30 20:23:32

标签: .net timer c++-cli

我正在尝试学习如何使用C ++ .net计时器。在这里给出的例子中:

http://msdn.microsoft.com/en-us/library/system.timers.timer.elapsed.aspx

在代码中:

// Hook up the Elapsed event for the timer.
aTimer->Elapsed += gcnew ElapsedEventHandler( Timer1::OnTimedEvent );

似乎+ =超载。在这种情况下它意味着什么?

另外我不明白为什么在链接的例子中,计时器会反复启动和停止,如输出所示:

 The Elapsed event was raised at 5/20/2007 8:42:27 PM
 The Elapsed event was raised at 5/20/2007 8:42:29 PM
 The Elapsed event was raised at 5/20/2007 8:42:31 PM

根据我的理解,它应该只是开始和停止一次。

1 个答案:

答案 0 :(得分:4)

它正在为计时器的Elapsed事件添加一个事件处理程序。

它类似于:

aTimer->Elapsed.AddHandler(gcnew ElapsedEventHandler(Timer1::OnTimedEvent));

如果有这样的功能。

定时器调用ElapsedEventHandler的构造函数中指定的函数,以通知用户已经过了设置的时间。

关于你的第二个问题,文件中的第一段解释了它:

  

如果Enabled设置为true且AutoReset设置为false,则为Timer   仅提升一次Elapsed事件,第一次是间隔   为止。

很明显,逻辑上相同的语句是:如果AutoReset设置为true,则Timer会无限期地提升Elapsed事件。

此外,您可以将AutoReset设置为false,并从事件处理程序中调用Reset()函数。这允许您确保计时器回调不重叠。