C# 存储特定时间间隔的变量值,奇怪的行为
我制作了一个winform应用程序,其中我使用了一个时间间隔为的system.timers.timer控件 10分钟后,我声明了一个整数变量,当触发特定事件时,该变量将递增 问题是整数值被重置为0,但当我将timer control设置为1分钟时,它会显示正确的结果 有人知道为什么会有这种奇怪的行为吗 我做了一些研究,发现其中一个原因可能是 垃圾收集器可能对此负责,但int值存储在堆上,对吗?在应用程序域关闭之前无法对其进行GC'dC# 存储特定时间间隔的变量值,奇怪的行为,c#,winforms,variables,timer,asp.net-4.0,C#,Winforms,Variables,Timer,Asp.net 4.0,我制作了一个winform应用程序,其中我使用了一个时间间隔为的system.timers.timer控件 10分钟后,我声明了一个整数变量,当触发特定事件时,该变量将递增 问题是整数值被重置为0,但当我将timer control设置为1分钟时,它会显示正确的结果 有人知道为什么会有这种奇怪的行为吗 我做了一些研究,发现其中一个原因可能是 垃圾收集器可能对此负责,但int值存储在堆上,对吗?在应用程序域关闭之前无法对其进行GC'd 如果你知道任何其他的解决方案,那么请建议,真的需要这个吗?我认
如果你知道任何其他的解决方案,那么请建议,真的需要这个吗?我认为问题在于变量被GC重置,但我也使用了GC.KeepAlive(TimerName);有人吗?System.Timers.Timer是多线程环境的计时器。
见: 在线程上引发
appead
事件
尝试改用系统.Windows.Forms.Timer
。但是,如果您对多线程行为感兴趣,请将计时器的
SynchronizingObject
属性设置为引用某个对象,该对象与整数变量在同一线程中声明。如果没有代码,除了“几乎可以肯定代码中存在错误”之外,这是无法回答的。还有,为什么这个标签是asp.net-4.0?代码讲述了最好的故事。人们阅读代码比阅读文章更舒服。我同意你们的观点,实际上代码有很多行。。我只是想确认堆值是否是GC安全的?