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 分ごとにバッチ処理を開始できます。
メモ AutoReset が false に設定されている場合、 Timer は最初の Interval が経過した後に、 Elapsed イベントを 1 回だけ発生させます。 Interval で Elapsed イベントを繰り返し発生させるには、 AutoReset を true に設定します。
実行時には 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