サーバー ベースのタイマの概説

更新 : 2007 年 11 月

サーバー ベースのタイマを使用すると、アプリケーションで定期的に発生するイベントの間隔を指定できます。このイベントを使用して、定期的な処理を実行できます。たとえば、週 7 日、1 日 24 時間稼動させる必要がある重要なサーバーがあるとします。タイマを使用するサービスを作成すると、このサーバーでシステムが稼動および実行されているかどうかを定期的に確認できます。システムが応答しない場合、このサービスはサーバーを再起動するか、または応答がないことを管理者へ通知します。

tb9yt5e6.alert_note(ja-jp,VS.90).gifメモ :

サーバーのタイマの間隔は、ミリ秒単位で指定します。

サーバーのタイマ、Windows のタイマ、およびスレッドのタイマ

Visual Studio および .NET Framework には、次の 3 つのタイマ コントロールがあります。

  • サーバー ベースのタイマ (ツールボックスに追加可能)

  • Windows ベースのタイマ (常にツールボックスに表示)

  • スレッド タイマ (プログラムから利用可能)

Windows ベースのタイマは、Windows フォーム アプリケーション用に最適化されています。サーバー ベースのタイマは、サーバー環境での実行用に最適化された従来のタイマを強化したものです。スレッドのタイマは、イベントの代わりにコールバック メソッドを使用する単純で軽量なタイマで、スレッド プール スレッドによって提供されます。

Win32 アーキテクチャのスレッドには、UI スレッドとワーカー スレッドの 2 つの種類があります。UI スレッドは、大半の時間はアイドル状態で、メッセージ ループにメッセージが到着するのを待機しています。メッセージを受け取ると、UI スレッドはそのメッセージを処理し、再び次のメッセージの到着を待ちます。一方、ワーカー スレッドはバックグラウンド処理を実行し、メッセージ ループを使用しません。Windows のタイマとサーバー ベースのタイマは、どちらも Interval プロパティを使用して実行されます。スレッドのタイマの間隔は、Timer コンストラクタで設定します。次のスレッドの処理の例に示されるように、それぞれのタイマの用途は異なります。

  • Windows のタイマは、処理に UI スレッドを使用するシングルスレッド環境用にデザインされています。Windows のタイマの精度は、55 ミリ秒に制限されています。これらの従来のタイマは、UI メッセージ ポンプを可能にするユーザー コードを必要とします。さらに、ユーザー コードを常に同一のスレッドから処理するか、または呼び出しをほかのスレッドに集約する必要があります。COM コンポーネントで従来のタイマを使用すると、パフォーマンスが低下します。

  • サーバー ベースのタイマは、マルチスレッド環境でワーカー スレッドと共に使用するようにデザインされています。サーバー ベースのタイマは、Windows のタイマとは異なるアーキテクチャを使用するため、Windows のタイマよりも高い精度を実現できます。サーバー タイマは、スレッド間を移動して、発生したイベントを処理します。

  • スレッドのタイマは、メッセージがスレッドに渡されない場合に便利です。たとえば、Windows ベースのタイマは、オペレーティング システムのタイマ サポートに依存していて、メッセージをスレッドに渡さない場合、タイマに関連付けられているイベントは発生しません。スレッドのタイマはこのような場合に便利です。

Windows ベースのタイマは System.Windows.Forms 名前空間、サーバー ベースのタイマは System.Timers 名前空間、スレッドのタイマは System.Threading 名前空間にあります。

参照

処理手順

方法 : サーバー ベースのタイマのインスタンスを作成する

方法 : サーバー ベースのタイマを監視する

概念

タイマ プログラミング アーキテクチャ

タイマ

マネージ スレッド プール

参照

Timer コンポーネントの概要 (Windows フォーム)