次の方法で共有


Timer クラス

アプリケーションで定期的にイベントを生成します。

この型のすべてのメンバの一覧については、Timer メンバ を参照してください。

System.Object
   System.MarshalByRefObject
      System.ComponentModel.Component
         System.Timers.Timer

Public Class Timer
   Inherits Component
   Implements ISupportInitialize
[C#]
public class Timer : Component, ISupportInitialize
[C++]
public __gc class Timer : public Component, ISupportInitialize
[JScript]
public class Timer extends Component implements ISupportInitialize

スレッドセーフ

この型の public static (Visual Basic では Shared) メンバは、マルチスレッド操作に対して安全です。すべてのインスタンス メンバがスレッド セーフになるかどうかは保証されていません。

解説

Timer コンポーネントはサーバー ベースのタイマで、これを使用して Elapsed イベントをアプリケーションで発生させる任意の間隔を指定できます。その後、このイベントを使用して、一定の間隔で処理を行うことができます。たとえば、1 日 24 時間、1 週間 7 日稼働する必要がある重要なサーバーがあるとします。定期的にサーバーをチェックし、システムが稼働状態であることを確認するために Timer を使用するサービスを作成できます。システムが応答しない場合は、このサービスによりサーバーが再起動されるか、または管理者に通知されます。

サーバー ベースの Timer は、マルチスレッド環境においてワーカー スレッドと共に使用するようにデザインされています。サーバー タイマはスレッド間を移動して、発生した Elapsed イベントを処理できます。このため、イベントを時間どおりに発生させるという点で、Windows のタイマより正確です。サーバー ベースのタイマの詳細については、「 サーバー ベースのタイマの概説 」を参照してください。

メモ    Stop メソッドが呼び出された後でも、イベント処理メソッドが呼び出される場合があります。イベント処理メソッドは、 Stop メソッドへの呼び出しが 1 つのスレッド上で実行されているとき、同時に別のスレッド上で実行される場合があります。これにより、 Stop メソッドを呼び出した後でも、 Elapsed イベントが発生することがあります。これを防ぐには、 SignalTime プロパティを使用して、イベントが発生した時刻と Stop メソッドを呼び出した時刻を比較します。 Stop メソッドを呼び出した後にイベントが発生した場合は、そのイベントを処理しないでください。

Timer コンポーネントは、 Interval プロパティの値を基に Elapsed イベントを発生させます。このイベントを処理して、必要な処理を実行できます。たとえば、継続的にデータベースに売上をポストするオンラインのセールス アプリケーションがあるとします。配送の指示をコンパイルするサービスは、オーダーを個別にではなくバッチで処理します。 Timer を使用すると、30 分ごとにバッチ処理を開始できます。

メモ    AutoResetfalse に設定されている場合、 Timer は最初の Interval が経過した後に、 Elapsed イベントを 1 回だけ発生させます。 IntervalElapsed イベントを繰り返し発生させるには、 AutoResettrue に設定します。

実行時には Timer は参照できません。

Timer のインスタンスの初期プロパティ値の一覧については、 Timer コンストラクタのトピックを参照してください。

使用例

[Visual Basic, C#, C++] 5 秒ごとに、コンソールに "Hello World!" と表示する Timer を作成する例を次に示します。

[Visual Basic, C#, C++] この例では、 System.Timers 名前空間を使用します。

 
Public Class Timer1
    
    Public Shared Sub Main()
        Dim aTimer As New System.Timers.Timer()
        AddHandler aTimer.Elapsed, AddressOf OnTimedEvent
        ' Set the Interval to 5 seconds.
        aTimer.Interval = 5000
        aTimer.Enabled = True
        
        Console.WriteLine("Press 'q' to quit the sample.")
        While Console.Read() <> CInt("q")
        End While
    End Sub
        
    ' Specify what you want to happen when the Elapsed event is raised.
    Private Shared Sub OnTimedEvent(source As Object, e As ElapsedEventArgs)
        Console.WriteLine("Hello World!")
    End Sub
End Class


[C#] 
public class Timer1
 {
 
     public static void Main()
     {
         System.Timers.Timer aTimer = new System.Timers.Timer();
         aTimer.Elapsed+=new ElapsedEventHandler(OnTimedEvent);
         // Set the Interval to 5 seconds.
         aTimer.Interval=5000;
         aTimer.Enabled=true;
 
         Console.WriteLine("Press \'q\' to quit the sample.");
         while(Console.Read()!='q');
     }
 
     // Specify what you want to happen when the Elapsed event is raised.
     private static void OnTimedEvent(object source, ElapsedEventArgs e)
     {
         Console.WriteLine("Hello World!");
     }
 }
 

[C++] 
public __gc class Timer1
{
public:
    static void Main() {
        System::Timers::Timer* aTimer = new System::Timers::Timer;
        aTimer->Elapsed += new ElapsedEventHandler(0, Timer1::OnTimedEvent);
        // Set the Interval to 5 seconds.
        aTimer->Interval=5000;
        aTimer->Enabled=true;
    }
private:
    // Specify what you want to happen when the Elapsed event is raised.
     static void OnTimedEvent(Object* /*source*/, ElapsedEventArgs* /*e*/)
     {
         Console::WriteLine(S"Hello World!");
     }
};

int main()
{
    Timer1::Main();

    Console::WriteLine(S"Press \'q\' to quit the sample.");
    while(Console::Read()!='q');
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Timers

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System (System.dll 内)

参照

Timer メンバ | System.Timers 名前空間 | AutoReset | Interval | サーバー ベースのタイマの概説 | Elapsed | Timer