Heim > Backend-Entwicklung > C++ > Wie kann ich in C# einen hochauflösenden Timer mit einer Genauigkeit von 1 ms erstellen?

Wie kann ich in C# einen hochauflösenden Timer mit einer Genauigkeit von 1 ms erstellen?

Linda Hamilton
Freigeben: 2025-01-17 10:57:13
Original
833 Leute haben es durchsucht

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

Hochauflösender Timer in C#

Die System.Timer-Klasse ist ein häufig verwendeter Timer in C#, der bei Ablauf ein Ereignis auslöst. Für hochauflösendes Timing reicht es jedoch nicht aus. In diesem Artikel werden Lösungen zum Erstellen eines hochauflösenden Timers untersucht, der ein Ereignis in 1-ms-Intervallen auslöst.

Einschränkungen des NET Framework

Das .NET Framework bietet keine integrierten zur Unterstützung hochauflösender Timer. Die Multimedia-Timer-API in Windows bietet jedoch einen Mechanismus für hochauflösende Timer-Ereignisse.

Multimedia-Timer

Die Multimedia-Timer-API bietet einen Timer, mit dem konfiguriert werden kann eine Auflösung von bis zu 1 ms. Der folgende Code demonstriert seine Verwendung:

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;
}
Nach dem Login kopieren

Codebeispiel

Hier ist ein vollständiges Beispiel, das den Multimedia-Timer verwendet:

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();
        }
    }

    // ...
}
Nach dem Login kopieren

Hinweis: Die Multimedia-Timer-API kann sich auf die Systemleistung auswirken, daher ist es wichtig, sie mit Bedacht zu verwenden. Es ist auch zu bedenken, dass es zu Leistungsschwankungen des Systems kommen kann, die zu Schwankungen in der Zuverlässigkeit des Timers führen können.

Das obige ist der detaillierte Inhalt vonWie kann ich in C# einen hochauflösenden Timer mit einer Genauigkeit von 1 ms erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage