C# 定时器


            System.Timers.Timer t = new System.Timers.Timer(5000);
            t.Enabled = true;
            t.Elapsed += T_Elapsed;

 

 private static void T_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {

}

### C#定时器的实现方式 在 C# 编程语言中,可以通过多种方法来实现定时器功能。这些方法适用于不同的场景和需求,下面详细介绍几种常见的实现方式。 #### 方法一:使用 `System.Timers.Timer` 类 这是最常用的定时器实现之一,适合于需要按固定时间间隔执行某些操作的任务。通过设置属性如 `Interval` 和 `AutoReset` 来控制定时器的行为[^3]。 ```csharp using System; using System.Timers; namespace Test2 { internal class Program { private static System.Timers.Timer Timer; static void Main(string[] args) { Timer = new System.Timers.Timer(); Timer.Interval = 2000; // 设置时间为2000毫秒(即2秒) Timer.AutoReset = true; // 是否自动重置并重复执行 Timer.Elapsed += Timer_Elapsed; // 绑定事件处理程序 Timer.Enabled = true; // 启动定时器,也可以用 Timer.Start() Console.WriteLine("Press any key to exit..."); Console.ReadKey(); // 阻塞主线程以便观察效果 } private static void Timer_Elapsed(object sender, ElapsedEventArgs e) { Console.WriteLine("定时器触发: " + DateTime.Now.ToString()); } } } ``` 此代码展示了如何创建一个每两秒钟打印当前时间的简单定时器。 --- #### 方法二:使用线程 (`Thread`) 和休眠 (`Sleep`) 这种方法利用多线程技术,在单独的线程中运行目标逻辑,并通过 `Thread.Sleep()` 让线程暂停一段时间后再继续执行[^1]。 ```csharp using System; using System.Threading; class ThreadTimerExample { public static void Main() { while (true) { Console.WriteLine("每隔一秒执行一次"); Thread.Sleep(1000); // 暂停1000毫秒(即1秒) } } } ``` 虽然这种方式易于理解,但它可能不如其他高级机制高效或灵活。 --- #### 方法三:基于异步任务 (`Task.Delay`) 对于现代应用程序开发而言,推荐采用这种更简洁且非阻塞性的方式完成相同目的——借助 .NET 的 Task 并行库以及延迟函数。 ```csharp using System; using System.Threading.Tasks; public class AsyncTimerExample { public async Task RunAsyncTimer(int intervalMilliseconds) { while (true) { await Task.Delay(intervalMilliseconds); Console.WriteLine($"定时任务已触发 @ {DateTime.Now}"); } } public static void Main(string[] args) { var example = new AsyncTimerExample(); _ = example.RunAsyncTimer(500).ConfigureAwait(false); Console.WriteLine("按下任意键退出..."); Console.ReadLine(); } } ``` 上述例子说明了怎样构建一个持续循环直到手动终止的应用程序;每次等待半秒钟之后再次显示消息给用户看。 --- ### 关于高精度的需求 如果项目中有更高精度的要求,则需考虑专门设计用来满足此类特殊场合下的工具比如 Multimedia Timers 或者 Performance Counters 等[^5]。不过一般情况下,默认提供的几个组件已经能够很好地覆盖大部分日常所需范围之外的情况了。 --- ### 总结 综上所述,C# 提供了丰富的 API 支持开发者根据不同业务特点选用合适的方案去达成预期目标。无论是基础版还是增强型版本都能找到对应的最佳实践案例可供参考学习[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值