Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 存储特定时间间隔的变量值,奇怪的行为_C#_Winforms_Variables_Timer_Asp.net 4.0 - Fatal编程技术网

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

C# 存储特定时间间隔的变量值,奇怪的行为,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 如果你知道任何其他的解决方案,那么请建议,真的需要这个吗?我认

我制作了一个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安全的?