4

私はWPFアプリケーションをプログラミングしています。BitmapCache次のように、いくつかのウィンドウで使用しました。

CacheMode = new BitmapCache() {
            EnableClearType = false,
            RenderAtScale = 2,
            SnapsToDevicePixels = false; }

それで:

  1. アプリケーションを実行すると、CPU 使用率は正常です。
  2. Ctrl+ Alt+ Del、タスク マネージャーを表示すると、「システム」という名前のプロセスが高い CPU 使用率を示しています。

Process Explorer は、次の 2 つのスレッドが原因であるという問題を示しています。

ntoskrnl.exe!WheaAttemptPhysicalPageOffline+0x350
dxgmms1.sys!VidMmInterface+0x26500

Intel HD グラフィックスを使用しました。

これは WPF、ダイレクト、またはグラフィック ドライバーのバグですか? 誰か知っていますか?

4

1 に答える 1

3

「システム」プロセスは、リング 0 で実行される Windows コードの統計を表示する偽のプロセスです。たとえば、デバイス ドライバーはリング 0 に存在します。Dxgmms1.sys は、DirectX のメモリ マネージャーです。WPF は DirectX を使用してグラフィックをレンダリングします。ビットマップは大量のメモリを使用する可能性があります。

したがって、ビットマップを使用する WPF アプリが DirectX 関連のデバイス ドライバーで多くの CPU 時間を費やしているのを見ても、大きな謎ではありません。Intel HD グラフィックスは、グラフィックス アクセラレータの最も安価な実装です。AMD または NVidea ビデオ カードに 50 ドルを費やすことは、おそらく迅速な修正でしょう。ビットマップのスケーリングを WPF に要求しないか、ビジュアル ツリーが無効になったためにレンダリングする必要があるレートを制限することは、別の迅速な修正になる可能性があります。

于 2013-05-07T14:38:23.050 に答える