Maison >développement back-end >C++ >Comment puis-je créer une minuterie haute résolution en C# avec une précision de 1 ms ?

Comment puis-je créer une minuterie haute résolution en C# avec une précision de 1 ms ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-17 10:57:13834parcourir

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

Minuterie haute résolution en C#

La classe System.Timer est une minuterie couramment utilisée en C# qui déclenche un événement à l'expiration. Cependant, pour le timing haute résolution, cela ne suffit pas. Cet article explore des solutions pour créer un minuteur haute résolution qui déclenche un événement à intervalles de 1 ms.

Limites du NET Framework

Le framework .NET n'offre pas de fonctionnalités intégrées. en prise en charge des minuteries haute résolution. Cependant, l'API Multimedia Timer dans Windows fournit un mécanisme pour les événements de minuterie haute résolution.

Minuterie multimédia

L'API Multimedia Timer fournit une minuterie qui peut être configurée avec une résolution allant jusqu'à 1 ms. Le code suivant démontre son utilisation :

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

Exemple de code

Voici un exemple complet qui utilise la minuterie multimédia :

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

    // ...
}

Remarque : L'API Multimedia Timer peut avoir un impact sur les performances du système, il est donc important de l'utiliser judicieusement. Il convient également de considérer que le système peut connaître des fluctuations de performances, entraînant des variations dans la fiabilité de la minuterie.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn