
过去几个小时,我一直在想我
我放在我的winform代码(从工具栏)的计时器不会打勾…
我在我的程序中有几个表单的计时器,他们都工作正常…我尝试完全一样,它不会打勾…
我选择它,拖动到窗体,启用它,设置间隔和处理tick事件…没有任何反应…
我甚至尝试把随机代码像messageBox.show在tick事件只是为了看是否有任何事情,没有什么!
正如我所说,在我的程序中有一个更多的计时器(在其他形式,不是在我想要放这个计时器),他们都工作正常…
有什么建议么?
提前致谢!
解决方法 我发现如果我从非UI线程停止计时器,那么再次启动它,我失去了事件钩子.我不知道“适当”的答案是什么,但对我来说这是很好的:
public class BetterTimer : Sy@R_403_6563@.windows.Forms.Timer{ public BetterTimer():base() { base.Enabled = true; } public BetterTimer(Sy@R_403_6563@.ComponentModel.IContainer container) : base(container) { base.Enabled = true; } private bool _Enabled; public overrIDe bool Enabled { get { return _Enabled; } set { _Enabled = value; } } protected overrIDe voID OnTick(Sy@R_403_6563@.EventArgs e) { if (this.Enabled) base.OnTick(e); }} 这样做的三件事情
1)通过覆盖构造函数,我确保从一开始就启用了基本定时器.
2)通过覆盖“已启用”,我从不让基地址计时器被禁用,但是接口没有改变.
3)通过覆盖“OnTick”,我让覆盖的Enabled属性决定事件是否触发.
Start()和Stop()分别通过将Enabled属性设置为true和false来工作.
BTW – 有没有人知道为什么事件永远不会触发(或断开?)当定时器从非UI线程停止/禁用?
总结以上是内存溢出为你收集整理的C#计时器不会打勾全部内容,希望文章能够帮你解决C#计时器不会打勾所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)