[FIX] .NET Framework ベースのアプリケーションで System.Threading.Timer クラスを使用すると、.NET Framework 1.1 SP1 でタイマ イベントが通知されないことがある

文書翻訳 文書翻訳
文書番号: 900822 - 対象製品
すべて展開する | すべて折りたたむ

現象

Microsoft .NET Framework 1.1 Service Pack 1 (SP1) が適用された環境で、Microsoft .NET Framework マネージ アプリケーションで System.Threading.Timer クラスを使用すると、タイマ イベントが通知されない場合があります。通常、この問題はアプリケーションを実行しているコンピュータの負荷が高くなっているか、複数のタイマ オブジェクトが実行されている場合に発生します。

解決方法

マイクロソフトでは、現在この問題を修正するソフトウェア更新プログラムを提供中ですが、更新プログラムはこの資料に記載された問題のみを修正することを目的としており、障害があったコンピュータに対してのみ適用することを推奨します。このソフトウェア更新プログラムは、今後さらにテストを行う場合があります。この問題で深刻な影響を受けていない場合は、このソフトウェア更新プログラムが含まれる次の .NET Framework 1.1 Service Pack がリリースされるまで待つことを推奨します。

この問題を解決するには、Microsoft Product Support Services にお問い合わせのうえ、ソフトウェア更新プログラムを入手してください。Microsoft Product Support Services の電話番号一覧およびサポート料金については、次のマイクロソフト Web サイトを参照してください。
http://support.microsoft.com/contactus/?ws=support
: Microsoft Support 担当者が、特定の更新プログラムを適用することにより問題が解決されると判断した場合、まれに通常サポート依頼にかかる料金が免除されることがあります。ただし、特定の更新プログラムの対象とならない追加の質問および問題については、通常のサポート料金が適用されます。

必要条件

Microsoft .NET Framework 1.1 SP1

再起動の必要性

このソフトウェア更新プログラムの適用後に、コンピュータを再起動する必要はありません。

ソフトウェア更新プログラムの置き換えに関する情報

このソフトウェア更新プログラムを適用しても、他のソフトウェア更新プログラムが置き換えられることはありません。

ファイル情報

   日付          時刻    バージョン        サイズ       ファイル名

   ------------------------------------------------------------
   2005/06/18  07:41  1.1.4322.2331  2,138,112  mscorlib.dll    
   2005/06/20  14:05                    10,908  mscorlib.ldo    
   2005/06/19  07:46  1.1.4322.2331  2,519,040  mscorsvr.dll    
   2005/06/19  07:46  1.1.4322.2331  2,506,752  mscorwks.dll    

状況

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

詳細

Timer クラスは、タイマ オブジェクトのリンク リストとして実装されます。最初の System.Threading.Timer オブジェクトが作成されると、スレッド プール マネージャによって、リンク リストを処理するためのスレッドが開始されます。すべてのタイマ オブジェクトはリンク リストに追加されます。リンク リストを処理するスレッドでは、リンク リストを順に処理して、現在のクロック カウントに対してタイマ イベントがいつ通知されるべきかを決定します。

タイマ オブジェクトに指定された時間が経過すると、スレッドでは、非同期にコールバック関数をキューに挿入した後、タイマ イベントの通知時刻を更新します。スレッドでは、リンク リスト内のすべてのタイマ オブジェクトを処理した後、リンク リストが最後に処理された時刻を更新します。その後、次に指定された時間が経過するタイマ オブジェクトについてリンク リストを再処理するまでの、スレッドの最短スリープ時間を計算します。

システムの負荷が高い場合や、リンク リスト内のタイマ オブジェクトの数が多い場合、処理中のスレッドでリンク リスト全体が処理される前に、このスレッドより優先度の高いスレッドが実行されることがあります。この動作が発生すると、次のタイマ イベントの通知時刻として予定されていた時刻が、最後にリンク リストが処理されたタイムスタンプの時刻よりも前の時刻になります。その結果、予定されていたタイマ イベントの通知時刻は過去の時刻になるため、永久に経過しません。

予定されていたタイマ イベントの通知時刻を既に経過したため、スレッドによって計算される、タイマ イベントが通知されるまでの待ち時間は負の数になる場合があります。スレッドの待ち時間が負の数の場合、スレッドは長時間スリープ状態になります。
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
824684 マイクロソフトのソフトウェアの更新で使用される一般的な用語の説明

プロパティ

文書番号: 900822 - 最終更新日: 2007年12月3日 - リビジョン: 2.4
この資料は以下の製品について記述したものです。
  • Microsoft .NET Framework 1.1 Service Pack 1
キーワード:?
kbbug kbfix kbqfe kbpubtypekc kbhotfixserver KB900822
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com