我有一个计时器,当时间用完时不会触发相关功能。我确实设置了Tick
事件。我将Interval
属性设置为12000
,然后我myTimerObject.Start();
。
BackgroundWorker
中的某个地方)中启动了这个计时器。我的理论是,即使计时器似乎正确启动,一旦BackgroundWorker
的相关DoWork
函数执行完毕,线程也会被销毁,这反过来也会导致计时器事件被破坏。 / p>
这是真的吗?还有其他可能的原因导致计时器事件没有发生吗?
答案 0 :(得分:4)
Pieter,问题不在于启动Timer的线程,而在于你没有对它进行实时引用这一事实,因此它会被垃圾收集。
来自计时器上的MSDN documentation(请参阅“备注”下的注释):
只要您使用计时器,就可以了 必须保持对它的引用。和。一样 任何托管对象,Timer都是主题 到有垃圾收集的时候 没有引用它。一个事实,一个 定时器仍处于活动状态并不会阻止 它被收集起来。