gpt4 book ai didi

c# - WPF DropShadowEffect 和 Blur 内存泄漏

转载 作者:可可西里 更新时间:2023-11-01 09:15:40 26 4
gpt4 key购买 nike

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

周末在一台旧电脑上运行这个程序时,发生了崩溃。跟踪和重新创建显示 igdumd32.dll(英特尔图形驱动程序 dll)中存在内存泄漏。经过一些调查后,我编写了 2 个简单的独立应用程序,在中央屏幕上有一个非常简单的动画。 1 个没有效果,1 个在动画上有 dropshadoweffect - 没有其他更改,实际上是对第一个应用程序的 1 行更改(xaml 非常冗长,否则我会在此处发布)。我通过 redgate 的内存分析器工具运行了 40 分钟。第一个很好:enter image description here但是第二个在 igdumd32.dll 和托管代码分配的内存上有明显的内存泄漏:enter image description here

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

有没有人遇到过这种情况?我的想法是仅当芯片组/驱动程序可以处理时才在 xaml 中使用特殊效果,但我无法在网络或 MSDN 上找到任何告诉我这些效果的硬件或驱动程序限制的信息(除了告诉我硬件加速是他们需要,否则我的 CPU 会增加)。

最佳答案

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

关于c# - WPF DropShadowEffect 和 Blur 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20469844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com