当前位置:首页 > .NET > C#

winform里面的定时器如何还执行

优良自学吧提供winform里面的定时器如何还执行,winform里面的定时器怎么还执行如题  C#  在一个窗体里面放了一个timer1定时器,有一个方法1妙执行一次,产生一个日志 窗体关闭后,发现这个定时器还在执行,这是怎么回事呢.难道定时器不是窗体的一个控件,不随窗体关闭时一起消失?,定时器是一个组件,其工作时

winform里面的定时器怎么还执行
如题 
C# 
在一个窗体里面放了一个timer1定时器,有一个方法1妙执行一次,产生一个日志
窗体关闭后,发现这个定时器还在执行,这是怎么回事呢.难道定时器不是窗体的一个控件,不随窗体关闭时一起消失?
------解决思路----------------------
定时器是一个组件,其工作时有自己的内部线程,Timer本身有Close、Dispose方法释放其占用的资源。
窗体关闭前要把Timer的Enabled设置为false。
------解决思路----------------------
引用:
Quote: 引用:

定时器是一个组件,其工作时有自己的内部线程,Timer本身有Close、Dispose方法释放其占用的资源。
窗体关闭前要把Timer的Enabled设置为false。


我在关窗事件里写了
this.timer1.Stop()
然后关闭窗体后发现不产生日志了.怎么还有enabled这个是做什么用的


Enabled中文的意思是:启用
------解决思路----------------------
Enabled设置为true就执行start,设置为false就执行stop,这个属性内部应该有封装相关动作
------解决思路----------------------
窗口里的定时器是不是自动销毁,要看你的窗口会不会被 GC 销毁。这就要就看你的窗口的“引用”的方式。跟你是否调用 Close 方法没有关系。

不过这恰好说明了你的程序很可能有内存泄漏问题。
------解决思路----------------------
引用:
Quote: 引用:

定时器是一个组件,其工作时有自己的内部线程,Timer本身有Close、Dispose方法释放其占用的资源。
窗体关闭前要把Timer的Enabled设置为false。


我在关窗事件里写了
this.timer1.Stop()
然后关闭窗体后发现不产生日志了.怎么还有enabled这个是做什么用的
意思就是这个定时器可用还是不可用,简单的来说就是true就是你让他启动正常工作,false就是禁用了。
------解决思路----------------------
要自己释放掉的。
------解决思路----------------------
引用:
Quote: 引用:

Enabled设置为true就执行start,设置为false就执行stop,这个属性内部应该有封装相关动作


很纠结,既然有start()和stop()那又怎么会有enabled这个属性

那2个函数只是在给enabled赋值true和false而已
没有这个属性,你怎么查看当前timer到底可用还是不可用?

只见过只读属性,只写属性有意义?
------解决思路----------------------
引用:
Quote: 引用:

窗口里的定时器是不是自动销毁,要看你的窗口会不会被 GC 销毁。这就要就看你的窗口的“引用”的方式。跟你是否调用 Close 方法没有关系。

不过这恰好说明了你的程序很可能有内存泄漏问题。


你说的这个问题好严重,我的所有窗体都是 this.close();
怎么办,还有,不是说C#不用考虑这个内存不释放的问题吗,不是自动回收?而且我没有使用非托管资源啊.

你窗体里是否创建了线程?用没用非托管资源,你自己说了不算,GC没回收就说明你用了非托管资源.

(本文来自互联网,不代表搜站(http://www.ylzx8.cn/)的观点和立场)
本站所有内容来自互联网,若本站收录的信息无意侵犯了贵司版权,请给我们来信(ylzx8cn@163.com),我们会及时处理和回复,谢谢

最近更新