winform里面的定时器怎么还执行

mirrorspace 2015-05-17 02:57:51
如题
C#
在一个窗体里面放了一个timer1定时器,有一个方法1妙执行一次,产生一个日志
窗体关闭后,发现这个定时器还在执行,这是怎么回事呢.难道定时器不是窗体的一个控件,不随窗体关闭时一起消失?
...全文
473 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
marswangbo 2015-05-18
  • 打赏
  • 举报
回复
要自己释放掉的。
姓小名白丶 2015-05-18
  • 打赏
  • 举报
回复
引用 2 楼 mirror030 的回复:
[quote=引用 1 楼 lovelj2012 的回复:] 定时器是一个组件,其工作时有自己的内部线程,Timer本身有Close、Dispose方法释放其占用的资源。 窗体关闭前要把Timer的Enabled设置为false。
我在关窗事件里写了 this.timer1.Stop() 然后关闭窗体后发现不产生日志了.怎么还有enabled这个是做什么用的[/quote]意思就是这个定时器可用还是不可用,简单的来说就是true就是你让他启动正常工作,false就是禁用了。
於黾 2015-05-18
  • 打赏
  • 举报
回复
引用 9 楼 mirror030 的回复:
[quote=引用 6 楼 sp1234 的回复:] 窗口里的定时器是不是自动销毁,要看你的窗口会不会被 GC 销毁。这就要就看你的窗口的“引用”的方式。跟你是否调用 Close 方法没有关系。 不过这恰好说明了你的程序很可能有内存泄漏问题。
你说的这个问题好严重,我的所有窗体都是 this.close(); 怎么办,还有,不是说C#不用考虑这个内存不释放的问题吗,不是自动回收?而且我没有使用非托管资源啊.[/quote] 你窗体里是否创建了线程?用没用非托管资源,你自己说了不算,GC没回收就说明你用了非托管资源.
憨吃傻睡 2015-05-18
  • 打赏
  • 举报
回复
说明你的窗体没有被回收,还在内存里。
於黾 2015-05-18
  • 打赏
  • 举报
回复
引用 10 楼 mirror030 的回复:
[quote=引用 4 楼 starfd 的回复:] Enabled设置为true就执行start,设置为false就执行stop,这个属性内部应该有封装相关动作
很纠结,既然有start()和stop()那又怎么会有enabled这个属性[/quote] 那2个函数只是在给enabled赋值true和false而已 没有这个属性,你怎么查看当前timer到底可用还是不可用? 只见过只读属性,只写属性有意义?
mirrorspace 2015-05-18
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
Enabled设置为true就执行start,设置为false就执行stop,这个属性内部应该有封装相关动作
很纠结,既然有start()和stop()那又怎么会有enabled这个属性
mirrorspace 2015-05-18
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
窗口里的定时器是不是自动销毁,要看你的窗口会不会被 GC 销毁。这就要就看你的窗口的“引用”的方式。跟你是否调用 Close 方法没有关系。 不过这恰好说明了你的程序很可能有内存泄漏问题。
你说的这个问题好严重,我的所有窗体都是 this.close(); 怎么办,还有,不是说C#不用考虑这个内存不释放的问题吗,不是自动回收?而且我没有使用非托管资源啊.
  • 打赏
  • 举报
回复
窗口里的定时器是不是自动销毁,要看你的窗口会不会被 GC 销毁。这就要就看你的窗口的“引用”的方式。跟你是否调用 Close 方法没有关系。 不过这恰好说明了你的程序很可能有内存泄漏问题。
  • 打赏
  • 举报
回复
窗口关闭了,窗口里的所有变量、方法等等也都可以访问啊?! 难道你认为调用了窗口的Close()方法,它就被 GC 回收了?
  • 打赏
  • 举报
回复
Enabled设置为true就执行start,设置为false就执行stop,这个属性内部应该有封装相关动作
我叫小菜菜 2015-05-17
  • 打赏
  • 举报
回复
引用 2 楼 mirror030 的回复:
[quote=引用 1 楼 lovelj2012 的回复:] 定时器是一个组件,其工作时有自己的内部线程,Timer本身有Close、Dispose方法释放其占用的资源。 窗体关闭前要把Timer的Enabled设置为false。
我在关窗事件里写了 this.timer1.Stop() 然后关闭窗体后发现不产生日志了.怎么还有enabled这个是做什么用的[/quote] Enabled中文的意思是:启用
mirrorspace 2015-05-17
  • 打赏
  • 举报
回复
引用 1 楼 lovelj2012 的回复:
定时器是一个组件,其工作时有自己的内部线程,Timer本身有Close、Dispose方法释放其占用的资源。 窗体关闭前要把Timer的Enabled设置为false。
我在关窗事件里写了 this.timer1.Stop() 然后关闭窗体后发现不产生日志了.怎么还有enabled这个是做什么用的
江南小鱼 2015-05-17
  • 打赏
  • 举报
回复
定时器是一个组件,其工作时有自己的内部线程,Timer本身有Close、Dispose方法释放其占用的资源。 窗体关闭前要把Timer的Enabled设置为false。

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧