c# 定时器的几种方法
时间: 2023-10-23 22:14:28 浏览: 180
在 C# 中,你可以使用以下几种方法来实现定时器功能:
1. System.Timers.Timer:这是一个基于线程的定时器,可以在指定的时间间隔内重复执行指定的代码。你可以设置 Interval 属性来指定时间间隔,并通过 Elapsed 事件来处理计时器事件。
```csharp
using System;
using System.Timers;
public class TimerExample
{
private static Timer timer;
public static void Main()
{
timer = new Timer();
timer.Interval = 1000; // 设置时间间隔为1秒
timer.Elapsed += TimerElapsed; // 绑定事件处理程序
timer.Enabled = true; // 启动计时器
Console.WriteLine("Press Enter to stop the timer.");
Console.ReadLine();
timer.Enabled = false; // 停止计时器
}
private static void TimerElapsed(object sender, ElapsedEventArgs e)
{
Console.WriteLine("Timer elapsed at {0}", e.SignalTime);
}
}
```
2. System.Threading.Timer:这是一个基于线程池的定时器,也可以在指定的时间间隔内重复执行指定的代码。你可以使用 Change 方法来设置时间间隔,并通过 TimerCallback 委托来处理计时器事件。
```csharp
using System;
using System.Threading;
public class TimerExample
{
private static Timer timer;
public static void Main()
{
TimerCallback callback = new TimerCallback(TimerElapsed);
timer = new Timer(callback, null, 0, 1000); // 设置时间间隔为1秒
Console.WriteLine("Press Enter to stop the timer.");
Console.ReadLine();
timer.Dispose(); // 停止计时器
}
private static void TimerElapsed(object state)
{
Console.WriteLine("Timer elapsed at {0}", DateTime.Now);
}
}
```
3. System.Threading.Tasks.Task.Delay:这是一种基于异步任务的延迟执行方法,可以在指定的时间间隔后执行指定的代码。
```csharp
using System;
using System.Threading.Tasks;
public class TimerExample
{
public static async Task Main()
{
Console.WriteLine("Press Enter to start the timer.");
Console.ReadLine();
while (true)
{
Console.WriteLine("Timer elapsed at {0}", DateTime.Now);
await Task.Delay(1000); // 设置时间间隔为1秒
}
}
}
```
这些是在 C# 中实现定时器功能的几种常用方法。你可以根据自己的需求选择适合的方法来实现定时器功能。
阅读全文