从BackgroundWorker启动时,定时器是否有效?

时间:2010-10-15 20:37:09

标签: c# multithreading timer

我有一个计时器,当时间用完时不会触发相关功能。我确实设置了Tick事件。我将Interval属性设置为12000,然后我myTimerObject.Start();

然而,我确实在一个单独的线程(BackgroundWorker中的某个地方)中启动了这个计时器。我的理论是,即使计时器似乎正确启动,一旦BackgroundWorker的相关DoWork函数执行完毕,线程也会被销毁,这反过来也会导致计时器事件被破坏。 / p>

这是真的吗?还有其他可能的原因导致计时器事件没有发生吗?

1 个答案:

答案 0 :(得分:4)

Pieter,问题不在于启动Timer的线程,而在于你没有对它进行实时引用这一事实,因此它会被垃圾收集。

来自计时器上的MSDN documentation(请参阅“备注”下的注释):

  

只要您使用计时器,就可以了   必须保持对它的引用。和。一样   任何托管对象,Timer都是主题   到有垃圾收集的时候   没有引用它。一个事实,一个   定时器仍处于活动状态并不会阻止   它被收集起来。