タイマー
タイマーとは、指定時刻に指定のデリゲートを呼び出す軽量オブジェクトのことです。 スレッド プール内の 1 つのスレッドが、待機操作を実行します。
Timer クラスの使用法は単純です。 Timer を作成するには、コールバック メソッドへの TimerCallback デリゲート、コールバックに渡される状態を表すオブジェクト、最初に発生する時間、およびコールバック呼び出しの間隔を表す時間を渡します。 保留中のタイマーをキャンセルするには、Timer.Dispose 関数を呼び出します。
メモ |
---|
他にも 2 つのタイマー クラスがあります。System.Windows.Forms.Timer クラスは、ビジュアルなデザイナーを操作するコントロールで、ユーザー インターフェイスのコンテキストで使用するように設計されています。このクラスは、ユーザー インターフェイス スレッドでイベントを発生させます。System.Timers.Timer クラスは Component から派生するため、ビジュアルなデザイナーで使用できます。このクラスもイベントを発生させますが、イベントは ThreadPool スレッドで発生します。System.Threading.Timer クラスは ThreadPool スレッドでコールバックを行い、イベント モデルは使用しません。またこのクラスは、状態オブジェクトをコールバック メソッドに提供します。他のタイマーは状態オブジェクトを提供しません。このクラスは、非常に軽量です。 |
次のコード例は、1 秒 (1000 ミリ秒) 後に起動し、Enter キーを押すまで 1 秒ごとに時を刻むタイマーを開始します。 実行中にタイマーがガベージ コレクションの対象とならないように、このタイマーへの参照を含む変数はクラス レベルのフィールドとします。 積極的なガベージ コレクションの詳細については、「KeepAlive」を参照してください。
Imports System
Imports System.Threading
Public Class Example
Private Shared ticker As Timer
Public Shared Sub TimerMethod(state As Object)
Console.Write(".")
End Sub
Public Shared Sub Main()
ticker = New Timer(AddressOf TimerMethod, Nothing, 1000, 1000)
Console.WriteLine("Press the Enter key to end the program.")
Console.ReadLine()
End Sub
End Class
using System;
using System.Threading;
public class Example
{
private static Timer ticker;
public static void TimerMethod(object state)
{
Console.Write(".");
}
public static void Main()
{
ticker = new Timer(TimerMethod, null, 1000, 1000);
Console.WriteLine("Press the Enter key to end the program.");
Console.ReadLine();
}
}
using namespace System;
using namespace System::Threading;
public ref class Example
{
private:
static Timer^ ticker;
public:
static void TimerMethod(Object^ state)
{
Console::Write(".");
}
static void Main()
{
TimerCallback^ tcb =
gcnew TimerCallback(&TimerMethod);
ticker = gcnew Timer(tcb, nullptr, 1000, 1000);
Console::WriteLine("Press the Enter key to end the program.");
Console::ReadLine();
}
};
int main()
{
Example::Main();
}