我遇到了一个GUI冻结问题,与硬件与软件UI渲染有关。
上下文:2台WPF应用程序(.NET 3.5 SP1)在双显示器XP嵌入式计算机(DirectX 9.0c)上运行。
在某些时候,其中一个应用程序冻结了。但只有渲染:GUI保持活动状态(消息泵处于活动状态,应用程序响应),但渲染未完成。 冻结可以持续数秒或永久。 第二个应用程序保持正常运行该错误仅在双显示配置中发生,第二个应用程序是一种催化剂(更多内存和CPU使用...)
使用穿孔器,我看到视频内存使用率不断上升和放大在尖峰中(cf:screenshot)。 在此期间,一个本机线程消耗100%的CPU(堆栈跟踪涉及WPFgfx,DirectX,GDI和视频驱动程序)
通常,当应用程序解冻时,它会完全呈现软件(使用Perforator进行紫色调)。 此外,取消激活硬件渲染会解冻应用程序。
到目前为止,我的结论是,我面临的是视频内存不足(如#14 in this post所述),试图回退到软件渲染,但有一个循环试图再次以硬件模式。
我是对的吗? 它会更像是WPF问题还是视频驱动程序问题?甚至是DirectX? 我可以调整一些参数吗?
答案 0 :(得分:7)
我是对的吗?它会更像是WPF问题还是视频驱动程序问题?甚至是DirectX?我可以调整一些参数吗?
这听起来像是司机问题。我会先看看是否有驱动程序更新。最好的选择可能只是完全禁用硬件加速,因为WPF(特别是在XP上)真的依赖于图形驱动程序。
Visual Studio 2010 sp1因此在XP上禁用了硬件加速......