mfc button static上_写了三四年的静态方法,今天入了static这个坑。

“C# Timer定时器的Stop用法 

上期使用c#语言对txt文件做了读写删的操作,在这期中顺带做了一个定时器功能,可以不间断的对文件数据做读取。如果想停止文件读写的操作改怎么操作呢?

这个定时器使用的是System.Timers.Timer。Timer有start和stop这两个方法可以用来控制定时器的开始和停止操作。

接下来介绍一下我们使用到的几个属性和方法。

 属性:

Timer.AutoReset 属性

获取或设置一个布尔值,该值指示 Timer 是否应只引发一次 Elapsed 事件((false) 或重复 (true))。

如果 Timer 应在每次间隔结束时引发 Elapsed 事件,则为 true;如果它仅在间隔第一次结束后引发一次 Elapsed 事件,则为 false。默认值为 true。

Timer.Enabled属性

获取或设置一个值,该值指示 Timer 是否应引发 Elapsed 事件。

如果 Timer 应引发 Elapsed 事件,则为 true;否则,为 false。默认值为 false。

方法:

Timer.Start 方法

通过将 Enabled 设置为 true 开始引发 Elapsed 事件。

Timer.Stop 方法

通过将 Enabled 设置为 false 停止引发 Elapsed 事件。

Timer.Close 方法

释放由 Timer 占用的资源。

详细参考microsoft官方文档的介绍

https://docs.microsoft.com/zh-cn/dotnet/api/system.timers.timer.enabled?view=net-5.0

接下来写个Test程序,衔接上期内容的winfrom程序,在winfrom界面上拖两个button按钮。

a4e229b79a8c30d4c0a8d302026ba056.png

在开始按钮的Click事件下添加:

            timer.Enabled = true;

            timer.AutoReset = true;

            timer.Start();

在停止按钮的Click事件下添加:

            timer.Enabled = false;

            timer.AutoReset = false;

            timer.Stop();

            timer.Close();

接下来启动程序:

点击停止按钮后程序会把线程里面的事件执行完才会停止。

然鹅。。把这个开始和停止写成函数调用的时候就会出现实例化的错误

efd515b42794d8d4b98284317e872c4f.png

388c9f0f28608c191b4c6274aed8caf4.png

尝试过很多种办法后在官网文档中找到解决办法。

7e4773bc3beeaedc3d58ad060f89eedf.png

97c26ecc2f66616da3c489f55835b3dc.png

这个时候在创建Timer的时候,加上static。就可以解决程序运行到close方法的时候出现实例化问题。

但是继续运行到close的时候发现这个timer事件并没有停止,依旧在运行,断点调试这个功能,也是有运行过这个方法的。后来仔细阅读官网文档,

Start当启用计时器时,对方法的调用不起作用。

如果 AutoReset 为 false ,则 Start 必须调用方法才能重新开始计数。

所以初始化的时候把AutoReset设置为Ture,

使用Enabled属性作为启动项。

397a83d09134faf58e98e15d3b95fd99.png

最后贴一个官网示例作为参考

ccc723f991b13e5425fad715d73d60f4.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值