4

我正在编写一个 WPF 应用程序。我BitmapCache在一些窗口中使用过,像这样:

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

然后:

  1. 运行我的应用,cpu使用正常。
  2. Ctrl++ AltDel显示任务管理器,名为“系统”的进程显示CPU使用率很高。

Process Explorer 显示它是由这 2 个线程引起的问题:

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

我使用英特尔高清显卡。

这是 WPF、直接或图形驱动程序的错误吗?有人知道吗?

4

1 回答 1

3

“系统”进程是一个假进程,显示在环 0 中运行的 Windows 代码的统计信息。例如,设备驱动程序就在那里。Dxgmms1.sys 是 DirectX 的内存管理器。WPF 使用 DirectX 来呈现图形。位图会占用大量内存。

因此,看到使用位图的 WPF 应用程序在 DirectX 相关的设备驱动程序中花费大量 cpu 时间并不是什么大问题。英特尔高清显卡是图形加速器的廉价实现。在 AMD 或 NVidea 显卡上花 50 美元可能是一个快速的解决方案。不要求 WPF 缩放位图或限制需要渲染的速率,因为可视化树已失效,这很可能是另一个快速修复。

于 2013-05-07T14:38:23.050 回答