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!