【发布时间】:2011-09-14 10:28:48
【问题描述】:
如果我有两个系统计时器分别在 10 秒和 20 秒触发事件,那么对事件函数的调用是多线程的吗?在下面的场景中,我有分别以 10 秒和 12 秒间隔触发事件的计时器。函数 'My10sEvent' 应该首先被调用。如果是慢速函数,需要 8 秒才能运行,是会阻塞另一个事件(tmr12s),还是会在 12s 准时触发第二个事件?
System.Timers.Timer tmr10s = new System.Timers.Timer(10000.0);
tmr10s.Enabled = true;
tmr10s.Elapsed += new ElapsedEventHandler(My10sEvent);
System.Timers.Timer tmr12s = new System.Timers.Timer(12000.0);
tmr12s.Enabled = true;
tmr12s.Elapsed += new ElapsedEventHandler(My12sEvent);
Thread.Sleep(System.Threading.Timeout.Infinite); //sleep indefinitely to let the above events fire
【问题讨论】:
-
我不认为它会阻塞.. 反正我不是粗鲁,但你自己检查真的那么难吗?
-
不,你一点也不粗鲁。我确实可以自己检查(并且正在这样做),但我发现这里的社区除了简单的答案外,还经常提供精彩的见解:)
-
是的,这是一个有效的观点,我理解。有时我只是觉得人们使用 SO 当普通的旧 google 或 C# 编译器就足够了,而你的问题的措辞方式(基本上,是或否)使它看起来像这些“懒得启动 VS”问题之一
标签: c# multithreading timer