C#定时器

这篇具有很好参考价值的文章主要介绍了C#定时器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C#常用的五种定时器分别是:

  • System.Timers.Timer
  • System.Threading.Timer
  • System.Windows.Threading.DispatcherTimer : WPF应用程序
  • System.Windows.Forms.Timer :WinForm应用程序
  • System.Diagnostics.Stopwatch :计时器

一、 System.Timers.Timer

定义:基于时间间隔的定时器,可以在一定时间间隔内一直重复执行。它使用Elapsed事件来通知定时器已经过去了指定的时间,并执行所需的操作。

using System.Timers;

static
void Main(string[] args) { Timer timer = new Timer(1000);//1秒钟的时间间隔 timer.Elapsed += OnTimedEvent; timer.AutoReset = true;//重复执行 timer.Enabled = true;//启动定时器 Console.WriteLine("按任意键退出"); Console.ReadKey(); } private static void OnTimedEvent(Object source,ElapsedEventArgs e) { Console.WriteLine("定时器事件触发,当前时间:" + DateTime.Now.ToString()); }

二、System.Threading.Timer

定义:基于线程池的定时器,可以在一定时间间隔内一直重复执行。它使用Callback委托来通知定时器已经过去了指定的时间,并执行所需的操作。

public Timer(TimerCallback callback, object state, int dueTime, int period):创建一个新的Timer实例,该实例在指定时间间隔内定期调用回调方法,并传递一个对象作为参数。
  • TimerCallback:回调方法,每次定时器调用时都会执行。
  • object:传递给回调方法的参数。
  • int:指定第一次调用回调方法的延迟时间(以毫秒为单位)。
  • int:指定每次调用回调方法的时间间隔(以毫秒为单位),Timeout.Infinite表示无限长等待时间。

public bool Change(int dueTime, int period):修改开始时间和间隔时间

  • timer.Change(5000, Timeout.Infinite);5s后执行一次定时器
  • timer.Change(-1, Timeout.Infinite);禁用定时器,定时器不再触发任何事件
using System.Threading;

static void Main(string[] args)
{
    Timer timer = new Timer(new TimerCallback(OnTimedEvent),null,0,1000);//1秒钟的时间间隔
    Console.WriteLine("按任意键退出");
    Console.ReadKey();
}
private static void OnTimedEvent(object state)
{
    Console.WriteLine("定时器事件触发,当前时间:"+DateTime.Now.ToString());
}

三、System.Windows.Threading.DispatcherTimer

定义:在UI线程上运行,并在指定的时间间隔内引发事件。它通常用于定期更新UI元素或执行其他UI相关任务。

使用:

  • 使用Interval属性设置定时器的时间间隔;
  • 注册Tick事件来通知定时器执行所需的操作;
  • 使用Start启动定时器;
  • 使用Stop暂停定时器;

注意:需要注意的是,由于DispatcherTimer是与UI线程关联的计时器,因此在处理事件时需要注 意不要阻塞UI线程,避免造成界面卡顿的问题。

using System.Windows.Threading;

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DispatcherTimer timer = new DispatcherTimer();
        timer.Interval = TimeSpan.FromSeconds(1);
        timer.Tick += TimerTick;
        timer.Start();
    }
    private void TimerTick(object sender, EventArgs e)
    {
        lbl.Content = DateTime.Now.ToString();
    }
}

四、System.Windows.Forms.Timer

定义:基于窗体的定时器,只能在Windows Forms应用程序中使用。它使用Tick事件来通知定时器已经过去了指定的时间,并执行所需的操作。

using System;
using System.Windows.Forms;

class Program : Form
{
    private Timer timer;

    static void Main(string[] args)
    {
        Application.Run(new Program());
    }

    public Program()
    {
        timer = new Timer();
        timer.Interval = 1000; // 1秒钟的时间间隔
        timer.Tick += OnTimedEvent;
        timer.Start();

        this.Text = "定时器示例";
        this.Size = new System.Drawing.Size(200, 200);
    }

    private void OnTimedEvent(Object source, EventArgs e)
    {
        Console.WriteLine("定时器事件触发,当前时间:" + DateTime.Now.ToString());
    }
}

五、System.Diagnostics.Stopwatch

定义:是一个高精度计时器,可以测量代码执行时间,但不是一个真正的计时器。它使用Start方法开始计时,使用Stop方法停止计时,并使用Elapsed属性获取经过的时间。

using System.Diagnostics;

static void Main(string[] args)
{
    Stopwatch stopwatch = new Stopwatch();
    stopwatch.Start();
    int sum = 0;
    for(int i = 0; i < 100000000;i++)
    {
        sum = sum + i;
    }
    stopwatch.Stop();
    Console.WriteLine("代码执行时间:"+stopwatch.ElapsedMilliseconds+"毫秒");
}

 文章来源地址https://www.toymoban.com/news/detail-707934.html

到了这里,关于C#定时器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#里面的三种定时计时器:Timer

    在.NET中有三种计时器: 1、System.Windows.Forms命名空间下的Timer控件,它直接继承自Componet。Timer控件只有绑定了Tick事件和设置Enabled=True后才会自动计时,停止计时可以用Stop()方法控制,通过Stop()停止之后,如果想重新计时,可以用Start()方法来启动计时器。Timer控件和它所在的

    2024年02月07日
    浏览(41)
  • # HAL库STM32常用外设教程(四)—— 基础定时器

    1、STM32F407ZGT6 2、STM32CubeMx软件 3、keil5 内容简述: 通篇文章将涉及以下内容,如有错误,欢迎指出 : 1、基础定时器特性 2、基础定时器的结构和功能 3、基础定时器HAL库驱动程序 (1)CubeMx配置 (2)TIM驱动程序   STM32F407有2个高级控制定时器(TIM1、TIM8)、8个通用定时器和

    2024年02月04日
    浏览(56)
  • HAL库STM32常用外设教程(五)—— 定时器 输出比较

    有关于定时器 输出PWM功能 不了解的可以看这篇文章 :HAL库STM32常用外设教程(一)—— 定时器 输出PWM 有关于定时器 定时功能 不了解的可以看这篇文章 :HAL库STM32常用外设教程(四)—— 定时器 基本定时 1、STM32F407ZGT6 2、STM32CubeMx软件 3、keil5 内容简述: 通篇文章将涉及以

    2024年03月27日
    浏览(64)
  • HAL库STM32常用外设教程(一)—— 定时器 输出PWM

    本篇文章为个人参考总结所用,如果错误还望指出。 涉及的知识: 1、STM32CubeMx的部分使用 2、PWM原理及常用概念 3、用单片机生成一定频率的PWM 用到的软件及单片机: 1、STM32CubeMx 2、IDE: MDK-Keil软件 3、芯片:STM32F407ZGT6 4、开发板:正点原子探索者 注:不同型号的单片机实现

    2024年02月02日
    浏览(57)
  • 定时器定时中断&定时器外部时钟

    1、RCC开启时钟,此时定时器的基准时钟和整个外设的工作时钟都打开 2、选择时基单元的时钟源,对于定时中断选择内部时钟源 3、配置时基单元,包括预分频器,自动重装器,计数模式等 4、配置输出中断控制允许更新中断输出到NVIC 5、配置NVIC,在NVIC中打开定时器中断的通

    2024年02月15日
    浏览(51)
  • STM-32:TIM定时中断—定时器定时中断/定时器外部时钟

    定时器可以对输入的时钟进行计数,并在达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等

    2024年02月09日
    浏览(58)
  • 【Qt】定时器处理——定时器事件类QTimerEvent和定时器类QTimer使用

    Qt的定时器只能通过纯代码实现,定时器顾名思义,主要作用是定时特定的时间。 Qt提供了定时器事件类 QQTimerEvent 和定时器类 QTimer 实现定时器操作。 Qt提供了更高层次的定时器编程接口** QTimer **类,可以使用信号和槽,还可以设置定时一次。比较常用的方法有: QTimer::set

    2024年02月05日
    浏览(47)
  • JMeter定时器之同步定时器

      在实际生活中大家肯定遇到过一种场景,就是在某一时间或某一时刻,某件商品进行抢购,相当于秒杀;但是用JMeter进行测试的时候,如何模拟这种场景?用一种组件就可以实现,定时器中的“同步定时器”。 了解t同步定时器的基础功能;熟悉同步定时器的使用场景。

    2024年01月16日
    浏览(45)
  • STM32单片机(六)TIM定时器 -> 第二节:TIM定时中断练习(定时器定时中断和定时器外部时钟)

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月09日
    浏览(41)
  • STM32定时器-定时器中断功能详解

    STM32的众多定时器中我们使用最多的是高级定时器和通用定时器,而高级定时器一般也是用作通用定时器的功能,下面我们就以通用定时器为例进行讲解,其功能和特点包括: 通用与基本定时器(2~7)位于低速的APB1总线上 高级定时器(1、8)位于高速的APB2总线上 自动装载计

    2024年02月08日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包