0

我制作了一个 winform 应用程序,其中我使用了一个时间间隔为 10 分钟的 system.timers.timer 控件,我声明了一个整数变量,该变量在触发特定事件时递增,问题是整数值重置为 0,但是当我将计时器控制设置为 1 分钟时,它显示了正确的结果,有谁知道为什么会出现这种奇怪的行为?

我做了一些研究,发现其中一个原因可能是垃圾收集器可能对此负责,但是 int 值存储在堆上,对吗?如果您知道任何其他解决方案,那么在关闭应用程序域之前无法进行 GC,那么请建议,真的需要这个吗?我认为问题是变量正在被 GC 重置,但我也使用了 ,GC.KeepAlive(TimerName);有人请吗?

4

1 回答 1

0

System.Timers.Timer是一个用于多线程环境的计时器。
MSDN

该事件在ThreadPool线程 Elapsed上引发。

尝试使用 aSystem.Windows.Forms.Timer代替。
但是,如果您对多线程行为感兴趣,请将计时器的属性设置为引用某个对象,该对象与您的整数变量SynchronizingObject在同一线程中声明。

于 2013-11-15T18:03:19.780 回答