![](/img/trans.png)
[英]Why does System.Timers.Timer create multiple threads when it fires the Elapsed events?
[英]Why does the timer Elapsed need += EventHandler?
我正在按照本教程编写Windows服务。 每60秒就会引发一个新事件,该事件将写入事件日志。 在代码中,使用+=
运算符引发新事件。
// Set up a timer that triggers every minute.
Timer timer = new Timer();
timer.Interval = 60000; // 60 seconds
timer.Elapsed += new ElapsedEventHandler(this.OnTimer);
timer.Start();
在此使用此运算符的动机是什么? 为什么不只是=
? 尤其是+
部分似乎使我感到困惑。
Elapsed
是一个事件。 根据ECMA-334 C#语言规范的第15.8.1章 :
声明事件的类型之外的代码对事件唯一允许的操作是+ =和-=。
在这里,仅仅赋值=
将是语法错误。 这是有道理的,因为C#中的委托人可能有许多订户。 从ch.20.1起
委托实例封装了一个调用列表,该列表是一个或多个方法的列表
因此,可能有多个Elapsed
事件处理程序,而+=
只是追加另一个事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.