2

我正在尝试学习如何使用 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

据我了解,它应该只启动和停止一次。

4

1 回答 1

4

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

这将类似于:

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

如果有这样的功能。

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

关于您的第二个问题,文档中的第一段对其进行了解释:

如果 Enabled 设置为 true 并且 AutoReset 设置为 false,则 Timer 仅引发 Elapsed 事件一次,即第一次经过的时间间隔。

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

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

于 2012-11-30T20:24:58.300 回答