C# 窗口化编程中实现高精度us延迟代码执行时间
时间: 2024-02-18 09:02:05 浏览: 194
使用C语言写的延时程序
在 C# 窗口化编程中,使用 Thread.Sleep 方法可以实现延迟,但是它的精度可能不够高。如果需要更高精度的延迟,可以使用 Win32 API 中提供的 Sleep 函数。
下面是一个实现高精度微秒级延迟的示例代码:
```csharp
using System;
using System.Runtime.InteropServices;
using System.Diagnostics;
class Program
{
[DllImport("kernel32.dll", SetLastError = true)]
static extern uint timeBeginPeriod(uint uMilliseconds);
[DllImport("kernel32.dll", SetLastError = true)]
static extern uint timeEndPeriod(uint uMilliseconds);
[DllImport("kernel32.dll", SetLastError = true)]
static extern void Sleep(uint dwMilliseconds);
static void Main(string[] args)
{
uint period = 1; // 设置计时器精度为1毫秒
timeBeginPeriod(period);
Stopwatch sw = new Stopwatch();
sw.Start();
// 延迟1微秒
Sleep(1);
sw.Stop();
long elapsedUs = sw.ElapsedTicks / (Stopwatch.Frequency / (1000L * 1000L));
Console.WriteLine("Elapsed time: " + elapsedUs + " us");
timeEndPeriod(period); // 恢复计时器精度
}
}
```
这个示例中,我们使用了 Win32 API 中的 timeBeginPeriod 和 timeEndPeriod 函数来设置计时器的精度为1毫秒。然后使用 Stopwatch 计时器来测量延迟时间,并将结果转换为微秒。最后,恢复计时器的精度。
阅读全文