【WinForm】定时器的使用方法除了定时还有延迟执行可用

在使用VS开发工具创建的WinForm项目中,有一个定时器组件,拖出来放上,它只是一个定时处理的作用,不会显示在窗体中。

开发中如果需要定时处理,就使用Timer组件即可,
在这里插入图片描述

在它的属性事件一栏里,有一个定时触发事件,在里面添加定时处理逻辑代码即可

如果只想处理一次就会自动停止,用上面的定时器组件处理,该怎么做呢,

可以在定时触发事件中,处理完成时,执行在最后的位置添加一行代码,如下

timer1.Stop();

只用来执行一次的,上面方法是大材小用,浪费资源,不推荐采用,可以改用系统内置的定时器对象,

介绍一下,这位才是真正的定时器,叫System.Timers.Timer,可以这么用,代码如下

private void TimerSwipe_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
	//这里写定时处理事件...
}

private void startNewTimer(int ms=1000)
{
    timerSwipe = new System.Timers.Timer()
    {
        Interval = ms,
        AutoReset = false//不重复
    };
    timerSwipe.Elapsed += TimerSwipe_Elapsed;
    timerSwipe.Start();
}

private void stopTimerSwipe()
{
    if (timerSwipe != null)
    {
        timerSwipe.Stop();
        timerSwipe.Dispose();
        timerSwipe = null;
    }
}

开始定时,调用上面的startNewTimer方法,延迟1m执行一次结束,
其中参数AutoReset 若为true就会定时重复执行,
若中途想取消定时,就调用上面的stopTimerSwipe方法

还可以通过创建一个任务,延迟处理,代码如下

var task = new Task(() => {
	Thread.Sleep(1000);//延迟1s执行
	//...执行一些任务
});
task.Start();

从用法上讲,定时器的功能跟处理异步任务差不多,原理相似

讲到这里,定时器的处理方法就这些了,Get到了吗,

若觉得有帮助,记得点赞再走哦~

请添加图片描述

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Winform中有两种常用的定时器,分别是System.Windows.Forms.Timer和System.Timers.Timer。\[1\]System.Windows.Forms.Timer是作为Winform的一个组件,使用简单方便。你可以直接将该组件拖放到Winform上,然后设置定时器的间隔时间,通过事件处理函数来执行定时任务。但是需要注意的是,System.Windows.Forms.Timer的执行频率并不是完全准确的,有时候会有一定的误差。\[3\] 另一种定时器是System.Timers.Timer,它需要通过编写代码来实现。你需要在代码中创建一个System.Timers.Timer对象,并设置定时器的间隔时间。然后通过事件处理函数来执行定时任务。相比于System.Windows.Forms.Timer,System.Timers.Timer的执行频率更加准确,完全按照设置的时间频率执行。\[2\] 下面是一个使用System.Timers.Timer的例子: ```csharp using System; using System.Timers; namespace WindowsFormsApplication1 { public partial class Form2 : Form { private int cnt = 0; private System.Timers.Timer myTimer; public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { // 创建定时器,并设置执行频率时间 this.myTimer = new System.Timers.Timer(1000); // 设置定时器执行的任务 this.myTimer.Elapsed += new System.Timers.ElapsedEventHandler(myTimer_Elapsed); this.myTimer.AutoReset = true; this.myTimer.Enabled = true; this.myTimer.Start(); } /** * 定时器执行的任务 */ private void myTimer_Elapsed(object sender, ElapsedEventArgs e) { cnt++; Console.WriteLine("myTimer-- " + cnt); } } } ``` 总结来说,如果你需要一个简单方便的定时器,可以使用System.Windows.Forms.Timer。但如果你需要一个准确的定时器,可以选择使用System.Timers.Timer。 #### 引用[.reference_title] - *1* *2* *3* [winform中对定时器使用](https://blog.csdn.net/iteye_10824/article/details/82602293)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TA远方

谢谢!收到你的爱╮(╯▽╰)╭

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值