在 C++ .net 计时器中使用时加号等号是啥
Posted
技术标签:
【中文标题】在 C++ .net 计时器中使用时加号等号是啥【英文标题】:What is the plus equal symbol when used in C++ .net Timers在 C++ .net 计时器中使用时加号等号是什么 【发布时间】:2012-11-30 20:23:32 【问题描述】:我正在尝试学习如何使用 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
据我了解,它应该只启动和停止一次。
【问题讨论】:
将 C++ 标签更改为 C++-cli。上面的代码不是有效的C++,只有C++-cli 【参考方案1】:它正在为计时器的 Elapsed 事件添加一个事件处理程序。
类似于:
aTimer->Elapsed.AddHandler(gcnew ElapsedEventHandler(Timer1::OnTimedEvent));
如果有这样的功能。
ElapsedEventHandler 的构造函数中指定的函数被定时器调用以通知用户设置的时间已经过去。
关于您的第二个问题,文档中的第一段对其进行了解释:
如果 Enabled 设置为 true 并且 AutoReset 设置为 false,则 Timer 只引发一次 Elapsed 事件,第一次是间隔 过去了。
显然,逻辑上相同的语句是:如果 AutoReset 设置为 true,则 Timer 会无限期地引发 Elapsed 事件。
此外,您可以将 AutoReset 设置为 false,并从事件处理程序中调用 Reset() 函数。这允许您确保计时器回调不重叠。
【讨论】:
感谢您的回答,但抱歉我做了一些修改。你知道我问题第二部分的答案吗? @dr_rk : 备注中注明:If Enabled is set to true and AutoReset is set to false, the Timer raises the Elapsed event only once, the first time the interval elapses.
以上是关于在 C++ .net 计时器中使用时加号等号是啥的主要内容,如果未能解决你的问题,请参考以下文章