首頁 >後端開發 >C++ >如何用 C# 創建精度為 1ms 的高解析度計時器?

如何用 C# 創建精度為 1ms 的高解析度計時器?

Linda Hamilton
Linda Hamilton原創
2025-01-17 10:57:13884瀏覽

How Can I Create a High-Resolution Timer in C# with 1ms Accuracy?

C# 中的高解析度計時器

System.Timer 類別是C# 中常用的計時器,它在到期時引發事件。然而,對於高解析度計時來說,它還不夠。本文探討了創建以 1 毫秒間隔觸發事件的高解析度計時器的解決方案。

NET 框架限制

.NET 框架不提供內建 -支援高解析度計時器。然而,Windows 中的多媒體計時器 API 提供了一種高解析度計時器事件的機制。

多媒體定時器

多媒體定時器 API 提供了一個可以設定的定時器解析度高達 1 毫秒。以下程式碼示範了其用法:

class MultimediaTimer : IDisposable
{
    // ...

    public int Interval
    {
        get { return interval; }
        set
        {
            // ...
        }
    }

    public int Resolution
    {
        get { return resolution; }
        set
        {
            // ...
        }
    }

    public void Start()
    {
        // ...
    }

    public void Stop()
    {
        // ...
    }

    public event EventHandler Elapsed;
}

程式碼範例

這是使用多媒體計時器的完整範例:

class Program
{
    public static void Main(string[] args)
    {
        TestThreadingTimer();
        TestMultimediaTimer();
    }

    private static void TestMultimediaTimer()
    {
        Stopwatch s = new Stopwatch();
        using (var timer = new MultimediaTimer() { Interval = 1 })
        {
            timer.Elapsed += (o, e) => Console.WriteLine(s.ElapsedMilliseconds);
            s.Start();
            timer.Start();
            Console.ReadKey();
            timer.Stop();
        }
    }

    // ...
}

注意:多媒體定時器API 會影響系統效能,因此使用它很重要且明智地。另外值得考慮的是,系統可能會出現效能波動,從而導致計時器可靠性的變化。

以上是如何用 C# 創建精度為 1ms 的高解析度計時器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn