c#定时器

本文介绍了一个使用 WPF (Windows Presentation Foundation) 中的 DispatcherTimer 类创建定时器的示例。该示例展示了如何定义和初始化 DispatcherTimer 对象,并设置其间隔时间及 Tick 事件处理器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        public System.Windows.Threading.DispatcherTimer timer_ChildFrm;  //定义定时器
        public niu()
        {
            timer_ChildFrm = new System.Windows.Threading.DispatcherTimer();
            timer_ChildFrm.Interval = TimeSpan.FromMilliseconds(200);
            timer_ChildFrm.Tick += timer_ChildFrm_Tick;

            timer_ChildFrm.IsEnabled = true;               //定时器设置

}                  



        //
        // 摘要: 
        //     返回表示指定毫秒数的 System.TimeSpan。
        //
        // 参数: 
        //   value:
        //     毫秒数。
        //
        // 返回结果: 
        //     表示 value 的对象。
        //
        // 异常: 
        //   System.OverflowException:
        //     value 小于 System.TimeSpan.MinValue 或大于 System.TimeSpan.MaxValue。 - 或 - value
        //     为 System.Double.PositiveInfinity。 - 或 - value 为 System.Double.NegativeInfinity。
        //
        //   System.ArgumentException:
        //     value 等于 System.Double.NaN。
        public static TimeSpan FromMilliseconds(double value);                  

C#中的定时器(Timer)是一种用于在指定时间间隔后触发事件的组件,常用于定时任务、周期性操作或延迟执行。以下是C#中常见的几种定时器及其使用示例: --- ### 1. **System.Timers.Timer** - 适用于多线程环境,支持精确的定时触发。 - **示例代码**: ```csharp using System; using System.Timers; class Program { static void Main() { Timer timer = new Timer(1000); // 间隔1秒(1000毫秒) timer.Elapsed += OnTimedEvent; // 绑定事件 timer.AutoReset = true; // 重复触发 timer.Enabled = true; // 启动定时器 Console.WriteLine("按任意键退出..."); Console.ReadKey(); } private static void OnTimedEvent(object sender, ElapsedEventArgs e) { Console.WriteLine($"定时触发时间: {e.SignalTime}"); } } ``` --- ### 2. **System.Threading.Timer** - 基于线程池的轻量级定时器,适合后台任务。 - **示例代码**: ```csharp using System; using System.Threading; class Program { static void Main() { Timer timer = new Timer(TimerCallback, null, 0, 1000); // 立即开始,间隔1秒 Console.WriteLine("按任意键退出..."); Console.ReadKey(); } private static void TimerCallback(object state) { Console.WriteLine($"定时触发时间: {DateTime.Now}"); } } ``` --- ### 3. **System.Windows.Forms.Timer**(Windows窗体应用) - 专为UI线程设计,触发的事件在主线程中执行。 - **示例代码**: ```csharp using System; using System.Windows.Forms; class Program : Form { static void Main() { Form form = new Program(); Timer timer = new Timer { Interval = 1000 }; // 1秒间隔 timer.Tick += (sender, e) => Console.WriteLine($"UI定时触发: {DateTime.Now}"); timer.Start(); Application.Run(form); } } ``` --- ### 4. **DispatcherTimer**(WPF应用) - 适用于WPF,在UI线程上触发事件。 - **示例代码**: ```csharp using System; using System.Windows; using System.Windows.Threading; class Program { [STAThread] static void Main() { DispatcherTimer timer = new DispatcherTimer(); timer.Interval = TimeSpan.FromSeconds(1); timer.Tick += (sender, e) => Console.WriteLine($"WPF定时触发: {DateTime.Now}"); timer.Start(); Application app = new Application(); app.Run(); } } ``` --- ### 关键区别: - **线程安全**:`System.Timers.Timer`和`System.Threading.Timer`在线程池线程中触发事件,而`Forms.Timer`和`DispatcherTimer`在UI线程触发。 - **精度**:`System.Threading.Timer`和`System.Timers.Timer`精度更高。 - **用途**:根据应用类型(控制台、WinForms、WPF)选择合适的定时器。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值