C# の高解像度タイマー
System.Timer クラスは、有効期限が切れたときにイベントを発生させる、C# で一般的に使用されるタイマーです。ただし、高解像度のタイミングでは不十分です。この記事では、1 ミリ秒間隔でイベントを起動する高解像度タイマーを作成するためのソリューションについて説明します。
NET Framework の制限
.NET Framework では、ビルドされた高解像度タイマーのサポート。ただし、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# で 1 ミリ秒の精度の高解像度タイマーを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。