WPF ベースのアプリケーションを実行するときのエラー メッセージまたは高い CPU 使用率

この記事は、WPF ベースのプログラムがテキストを処理するときに、Windows Presentation Foundation (WPF) ベースのプログラムで FileFormatException または ArgumentOutOfRangeException エラー メッセージを受け取る問題を解決するのに役立ちます。

適用対象: Windows Presentation Foundation
元の KB 番号: 937135

現象

Microsoft .NET Framework 3.0 で WPF ベースのアプリケーションを実行すると、FileFormatException エラーまたは ArgumentOutofRangeException エラーが発生する可能性があります。 このエラーは、WPF ベースのアプリケーションがテキストの処理を開始したときに発生します。 たとえば、次のような FileFormatException エラー メッセージが表示される場合があります。

file:///filepath/file_name ファイルは、想定されるファイル形式の仕様に準拠していません。

このエラー メッセージでは、 file_name は通常、フォントのファイル名です。 さらに、アプリケーションは最大 100% の CPU 時間を消費します。

タスク マネージャーやその他のツールを見ると、PresentationFontCache.exe は使用可能なプロセッサ時間の 50% 以上を消費します。

原因

この問題は、ビデオ ドライバーがメモリに格納されているフォント キャッシュ内のデータを上書きする場合に発生します。

解決方法

この問題を解決するには、次の手順を実行します。

  1. コンピューター上で実行されているすべての WPF ベースのアプリケーションを終了します。

  2. Windows Presentation Foundation フォント キャッシュ 3.0.0.0 サービスを停止します。 Windows Presentation Foundation Font Cache 3.0.0.0 サービスを停止するには、次のいずれかの方法を使用します。

    • 方法 1: Microsoft 管理コンソールを使用する

      1. [ スタート] をクリックし、[ 実行] をクリックし、「 Services.msc」と入力して、[OK] をクリック します
      2. フォント キャッシュ 3.0.0.0 Windows Presentation Foundation右クリックし、[停止] をクリックします。
    • 方法 2: コマンド プロンプトを使用する

      1. [ スタート] をクリックし、[ 実行] をクリックし、「 cmd」と入力して、[OK] をクリック します
      2. コマンド プロンプトで、net stop "Windows Presentation Foundation Font Cache 3.0.0.0" と入力し、Enter キーを押します。
  3. 古いFontcache3.0.0.0.dat ファイルを削除します。

    注:

    既定では、Fontcache3.0.0.0.dat ファイルは Windows Vista の %windir%\ServiceProfiles\LocalService\AppData\Local フォルダーにあります。 既定では、Fontcache3.0.0.0.dat ファイルは %systemdrive%\Documents and Settings\LocalService\Local Settings\Application Data Windows XP のフォルダーと以前のバージョンの Windows にあります。

  4. ビデオ カード ドライバーを更新します。 それには、以下のいずれかの方法を使用します。

    • 方法 1: カタログWindows Update使用する

      ビデオ カード ドライバーを更新するには、Windows Update カタログの更新プログラムをチェックします。 Windows Update カタログからドライバーをダウンロードする方法の詳細については、「Windows Update カタログからドライバーと修正プログラムを含む更新プログラムをダウンロードする方法」を参照してください。

    • 方法 2: 最新のビデオ カード ドライバーをダウンロードしてインストールする

      最新のビデオ カード ドライバーをダウンロードしてインストールするには、コンピューターまたはビデオ ハードウェアの製造元にお問い合わせください。

詳細

ビデオ カード ドライバーがメモリに格納されているフォント キャッシュ内のデータを上書きすると、破損したデータがデータ ファイルとしてハード ディスクに保存される可能性があります。 そのため、別の WPF ベースのアプリケーションが破損したデータ ファイルの読み取りを試みると、「 現象 」セクションに記載されている問題が発生する可能性があります。

ビデオ カード ドライバーを更新し、Fontcache3.0.0.0.dat ファイルを削除すると、新しいコンピューター構成に基づいて新しいフォント キャッシュ データ ファイルが作成されます。 この新しいフォント キャッシュ データ ファイルは、Windows Presentation Foundation Font Cache 3.0.0.0 サービスが停止したときに作成されます。 通常、新しいフォント キャッシュ データ ファイルは、コンピューターがシャットダウンまたは再起動されたときに作成されます。