c# 1毫秒 Stopwatch 高精度定时器
时间: 2023-09-29 21:08:11 浏览: 289
在C#中,可以结合使用`Stopwatch`类和`Thread.Sleep`方法来实现1毫秒级别的高精度定时器。
以下是一个示例代码,演示如何使用`Stopwatch`和`Thread.Sleep`实现1毫秒的高精度定时器:
```csharp
using System;
using System.Diagnostics;
using System.Threading;
class Program
{
static void Main()
{
// 创建 Stopwatch 对象
Stopwatch stopwatch = new Stopwatch();
// 启动计时器
stopwatch.Start();
// 定时器计数
int count = 0;
// 定时器目标时间间隔(毫秒)
int targetInterval = 1;
while (true)
{
// 执行你的定时任务逻辑
// 等待剩余时间,以实现精确的定时器间隔
int elapsedMilliseconds = (int)stopwatch.ElapsedMilliseconds;
int remainingMilliseconds = targetInterval - elapsedMilliseconds % targetInterval;
Thread.Sleep(remainingMilliseconds);
// 重置 Stopwatch,以便下一次计时
stopwatch.Restart();
// 输出定时器触发次数
count++;
Console.WriteLine("定时器触发次数: {0}", count);
}
}
}
```
在上面的示例中,我们使用一个循环来模拟高精度的定时器。在每次循环中,我们执行定时任务逻辑,并使用`Stopwatch.ElapsedMilliseconds`获取经过的时间。然后,我们计算出剩余的时间,以实现精确的定时器间隔,通过调用`Thread.Sleep`来等待剩余时间。之后,我们重置`Stopwatch`对象,以便下一次计时。最后,我们输出定时器触发的次数。
请注意,尽管我们使用了`Stopwatch`和`Thread.Sleep`来实现近似1毫秒的定时器,但实际触发时间可能会有一些偏差,取决于系统时钟的精度和系统负载情况。因此,无法保证完全精确到1毫秒。
阅读全文