WPF DropShadowEffect和Blur内存泄漏

El *_*chi 10 c# wpf xaml memory-leaks

我正在编写一个应用程序,它本质上是一堆松散的xaml屏幕 - 没有代码隐藏,只是在运行时动态链接到ViewModel.

在一台旧电脑上运行这个周末,发生了一次崩溃.跟踪和重新创建显示igdumd32.dll(一个英特尔图形驱动程序DLL)中存在内存泄漏.经过一番调查后,我在中心屏幕上编写了2个简单的独立应用程序和一个非常简单的动画.1没有效果,1对动画有影响效果 - 没有其他变化,字面意思是对第一个应用程序的1行更改(xaml非常详细,否则我会在这里发布).我通过redgate的内存分析器工具运行了40分钟.第一个很好:在此输入图像描述 但是第二个在igdumd32.dll和托管代码分配的内存上有明显的内存泄漏:在此输入图像描述

我注意到的另一件事是,这不会发生在新的电脑上.查看igdumd32.dll的版本 - 较旧的PC具有2009版本(8.15.10.1930),而较新(工作)的PC具有2012版本(8.15.10.2639).

还有其他人经历过这个吗?我的想法是只在xaml中使用特殊效果,当芯片组/驱动程序可以处理这个时,但我在网上或MSDN上找不到任何告诉我这些效果的硬件或驱动程序限制的内容(除了告诉我硬件加速是他们或我的CPU需要提升).

Jam*_*rst 1

WPF 早期迭代中的 DropShadow 和 Blur 效果是在软件中实现的(即在 WPF 本身内),并且可能不会存在内存泄漏问题。后来(4.0 及更高版本)稍微更改了语法,并添加了将这些效果卸载到图形硬件的功能。虽然这确实提高了执行速度,但它也依赖于图形驱动程序以避免内存泄漏。您可以更改代码以在 WPF 本身中实现这些功能,或者像您已经拥有的那样,为图形驱动程序提供硬编码的外观。