Windows フォームアプリケーションで、フォーカス移動、キー入力が連続して行われた場合に GDI オブジェクトが増加する場合があります

現象
この資料は、.NET Framework の問題により、Windows フォームアプリケーションで GDI オブジェクトが増加する問題について説明しています。

多数の TextBox コントロールを配置した Windows フォームアプリケーションで、Enter キーによって TextBox を移動し続けるような操作を行った場合に、GDI オブジェクトが増加する可能性があります。
その結果、GDI オブジェクトの既定の上限である 10000 に達した場合には、アプリケーション例外などの予期しない問題が発生する場合があります。


プロセスが使用する GDI オブジェクト数は、タスク マネージャーから以下のように確認できます。
  1. タスク マネージャー を起動し、[プロセス] タブを選択します。
  2. [表示] メニューの [列の選択] をクリックし GDI オブジェクト を選択します。
  3. [プロセス] タブに表示されているプロセスの一覧から、アプリケーションのプロセスを確認します。

この操作により、アプリケーションのプロセスの [GDI オブジェクト] の数値を確認し、10000 に達すると、予期しない問題が発生する場合があります。


原因
Windows 7 では、フォーカスの移動時など、コントロールの描画が行われる際に、ちらつきがなく滑らかに表示されるような描画処理を行っています。
この処理では、別途 GDI オブジェクトを生成して描画行っており、通常は定期的にそのオブジェクトの解放が行われるようになっています。
しかしながら、コントロールのフォーカス移動とキー入力が連続で行われるような場合、オブジェクトの解放処理が遅延し、GDI オブジェクトが増加し続ける可能性があります。

本問題は、フォーカス移動時の描画処理で生成される GDI オブジェクトの解放が遅延するために発生します。
そのため、フォーカス移動を伴わない、TextBox コントロール内に文字を連続して入力するような場合には発生しません。
また、デスクトップ テーマによってスクリーン表示が制御されている際に発生する現象であるため、Windows クラシック テーマを使用している場合にはこの現象は発生しません。
状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2693980 - 最終更新日: 04/03/2012 09:32:00 - リビジョン: 1.0

Microsoft .NET Framework 3.5, Microsoft .NET Framework 4.0, Windows 7 Enterprise, Windows 7 Home Basic, Windows 7 Home Premium, Windows 7 Professional, Windows 7 Ultimate

  • kbbug kbexpertiseadvanced KB2693980
フィードバック