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中文網其他相關文章!