C#计时器不会打勾
发布时间:2020-12-15 03:56:04 所属栏目:百科 来源:网络整理
导读:我有一个奇怪的问题 过去几个小时,我一直在想我 我放在我的winform代码(从工具栏)的计时器不会打勾… 我在我的程序中有几个表单的计时器,他们都工作正常…我尝试完全一样,它不会打勾… 我选择它,拖动到窗体,启用它,设置间隔和处理tick事件…没有任何反应…
我有一个奇怪的问题
过去几个小时,我一直在想我 我放在我的winform代码(从工具栏)的计时器不会打勾… 我在我的程序中有几个表单的计时器,他们都工作正常…我尝试完全一样,它不会打勾… 有什么建议么? 提前致谢! 解决方法
我发现如果我从非UI线程停止计时器,那么再次启动它,我失去了事件钩子.
我不知道“适当”的答案是什么,但对我来说这是很好的: public class BetterTimer : System.Windows.Forms.Timer { public BetterTimer():base() { base.Enabled = true; } public BetterTimer(System.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(System.EventArgs e) { if (this.Enabled) base.OnTick(e); } } 这样做的三件事情 1)通过覆盖构造函数,我确保从一开始就启用了基本定时器. 2)通过覆盖“已启用”,我从不让基地址计时器被禁用,但是接口没有改变. 3)通过覆盖“OnTick”,我让覆盖的Enabled属性决定事件是否触发. Start()和Stop()分别通过将Enabled属性设置为true和false来工作. BTW – 有没有人知道为什么事件永远不会触发(或断开?)当定时器从非UI线程停止/禁用? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |