C# でタイマーをリセット

Muhammad Zeeshan 2023年10月12日
  1. C#System.Timer クラス
  2. C# でタイマーをリセットするには、Timer.AutoReset を使用する
C# でタイマーをリセット

この記事では、C# プログラミング言語を使用したタイマーのリセットについて説明します。

C#System.Timer クラス

C# のこの System.Timer クラスは、一定の時間が経過したときにコードのブロックを実行するメカニズムを提供し、このコードは複数回実行される場合があります。

C# でタイマーをリセットするには、Timer.AutoReset を使用する

タイマーの間隔が終了すると、AutoReset によりタイマーがリセットされ、0 からカウントを再開できます。enabled プロパティが true に設定されている場合はカウントダウンが開始されますが、これが false に設定されている場合は、Start() メソッドを呼び出してタイマーを再起動する必要があります。

プログラムのタイマー機能が完了したら、プログラムを終了し、そのリソースを他のコンテキストで使用できるようにする必要があります。言い換えると、Timer.AutoReset は、タイマーが Elapsed イベントを 1 回だけ false 発生させるか、数回 true 発生させるかを示すブール値の読み取りまたは書き込みを行います。

AutoReset イベントの構文は次のとおりです。

public bool AutoReset { get; set; }

この種のイベントはさまざまな用途に使用できますが、接続の状態を判別するための Web アプリケーションでの使用に特に適しています。ビデオゲーム中に使用するためのストップウォッチは、さらに別の潜在的な用途です。

次の例は、2 秒が経過したときにトリガーされる Elapsed イベントを使用してタイマーを作成する方法を示しています。次に、関連するイベントハンドラーの出力として、コンソールに私の名前は DelftStack と表示されます。

  1. まず、次のライブラリをインポートする必要があります。

    using System;
    using System.Timers;
    
  2. Shanitimer クラス内でタイマー変数(t と呼びます)を宣言すると、すべてのメソッドで使用できるようになります。

    private static System.Timers.Timer t;
    
  3. 組み込みのクラスに従ってタイマーを設定します。

    • AutoReset タイマーは、間隔が経過するとリセットされ、新しいカウントを開始します。これが false に設定されている場合は、タイマーをリセットする必要があります。
    • 2000 は、状況に応じて変更される可能性のある時間間隔です。ミリ秒で、Interval パラメータを設定してから必要なコードを実行するまでの待機時間を指定できます。
    t.AutoReset = true;
    t.Enabled = true;
    t.Interval = 2000;
    t.Elapsed += ontime;
    
    • Elapsed 属性は、時間の後に実行される関数を指定します。C# でのイベントハンドラーの定義は、私が行ったように、+= を使用してより迅速に実行でき、イベントハンドラーをサブスクライブするようにタイマーに指示します。
  4. コンソールにいくつかのアラートメッセージも表示しました。

    Console.WriteLine(" Waiting for Command ");
    Console.WriteLine(" Click on Enter Button to Exit Console ");
    Console.ReadLine();
    
  5. Stop() 関数を使用してタイマーを停止します。Dispose() 関数は、タイマーの実行が終了した後に消費したリソースを解放するために使用する必要があります。

    t.Stop();
    t.Dispose();
    
  6. ontime() メソッドには、Object および System.Timers.ElapsedEventArgs 引数が必要です。

    private static void ontime(Object source, System.Timers.ElapsedEventArgs s) {
      Console.WriteLine(" My name is DelftStack ");
    }
    

完全なソースコード:

using System;
using System.Timers;

class Shanitimer {
  private static System.Timers.Timer t;
  static void Main() {
    t = new System.Timers.Timer();
    t.AutoReset = true;
    t.Enabled = true;
    t.Elapsed += ontime;
    t.Interval = 2000;
    Console.WriteLine(" Waiting for Command ");
    Console.WriteLine(" Click on Enter Button to Exit Console ");
    Console.ReadLine();
    t.Stop();
    t.Dispose();
  }
  private static void ontime(Object source, System.Timers.ElapsedEventArgs s) {
    Console.WriteLine(" My name is DelftStack ");
  }
}

出力:

Waiting for Command
Click on Enter Button to Exit Console
My name is DelftStack
My name is DelftStack
//After this line, I pressed enter
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn

関連記事 - Csharp Timer