存储特定时间间隔的变量值,奇怪的行为

时间:2013-11-15 10:37:27

标签: c# winforms variables timer asp.net-4.0

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

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

1 个答案:

答案 0 :(得分:0)

System.Timers.Timer是多线程环境的计时器 见MSDN

  

ThreadPool主题上引发了Elapsed事件。

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