文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

.NET中的定时器:种类、用途与示例代码

2024-11-29 21:59

关注

1. System.Timers.Timer

System.Timers.Timer 是一个在指定间隔重复执行的服务器级定时器。它非常适合在后台任务中使用,如定期执行某些操作。

示例代码:

using System;
using System.Timers;

public class Example
{
    private static Timer aTimer;

    public static void Main()
    {
        // 创建一个定时器,并设置其间隔为2000毫秒(2秒)。
        aTimer = new Timer(2000);

        // Hook up the Elapsed event for the timer. 
        aTimer.Elapsed += OnTimedEvent;

        // 设置是否自动重置并启动定时器
        aTimer.AutoReset = true;
        aTimer.Enabled = true;

        Console.WriteLine("按 Enter 键退出程序...");
        Console.ReadLine();
    }

    private static void OnTimedEvent(Object source, ElapsedEventArgs e)
    {
        Console.WriteLine("The Elapsed event was raised at {0:HH:mm:ss.fff}", e.SignalTime);
    }
}

2. System.Threading.Timer

System.Threading.Timer 是一个简单的轻量级定时器,适合用于多线程环境。它可以在指定的时间间隔后执行一个回调方法。

示例代码:

using System;
using System.Threading;

public class Example
{
    public static void Main()
    {
        // 创建一个定时器,当两秒后触发,之后每两秒触发一次
        Timer timer = new Timer(TimerCallback, null, 2000, 2000);

        Console.WriteLine("按 Enter 键退出程序...");
        Console.ReadLine();
    }

    private static void TimerCallback(Object o)
    {
        Console.WriteLine("Timer callback executed at {0}", DateTime.Now);
    }
}

3. System.Windows.Forms.Timer (Windows Forms 应用)

如果你正在开发一个Windows Forms应用程序,System.Windows.Forms.Timer 是一个很好的选择。它基于Windows消息队列,并且只在UI线程上执行回调。

示例代码:

using System;
using System.Windows.Forms;

public class Form1 : Form
{
    private Timer myTimer;

    public Form1()
    {
        myTimer = new Timer();
        myTimer.Interval = 2000; // 设置定时器间隔为2000毫秒(2秒)
        myTimer.Tick += new EventHandler(myTimer_Tick); // 绑定Tick事件处理函数
        myTimer.Start(); // 启动定时器
    }

    private void myTimer_Tick(object sender, EventArgs e)
    {
        MessageBox.Show("Timer ticked at " + DateTime.Now);
    }
}

4. DispatcherTimer (WPF 或 Silverlight 应用)

对于WPF或Silverlight应用程序,DispatcherTimer 是一个基于UI线程的定时器,非常适合用于在UI上执行周期性更新。

示例代码:

using System;
using System.Windows.Threading;

public class MainWindowViewModel
{
    private DispatcherTimer dispatcherTimer;

    public MainWindowViewModel()
    {
        dispatcherTimer = new DispatcherTimer();
        dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
        dispatcherTimer.Interval = new TimeSpan(0, 0, 2); // 设置定时器间隔为2秒
        dispatcherTimer.Start();
    }

    private void dispatcherTimer_Tick(object sender, EventArgs e)
    {
        MessageBox.Show("DispatcherTimer ticked at " + DateTime.Now);
    }
}

总结

在.NET中,有多种定时器可供选择,具体取决于你的应用场景和需求。System.Timers.Timer 和 System.Threading.Timer 适用于后台任务和多线程环境,而 System.Windows.Forms.Timer 和 DispatcherTimer 则更适合于UI更新。选择正确的定时器类型对于确保应用程序的稳定性和性能至关重要。

来源:程序员编程日记内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯