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
Libérer: 2025-01-17 10:57:13
original
833 Les gens l'ont consulté

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;
}
Copier après la connexion

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

    // ...
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal