![]() |
1
2
解决内存泄漏的第一步是找到确定的来源。这并不总是显而易见的,有时会违背你的直觉。根据你的解释,如果你移除了你的用户控件,问题就消失了,但是当你把它放回去的时候,你又开始泄漏了。这很可能指向该控件中的内存泄漏(尽管不一定)。也许你的控制适合 one of the many types of WPF memory leaks 或者您有一个更经典的问题,即订阅一个事件,但在不再需要时不正确地将其取消。( the weak event pattern 在这里很有用)。 你最好的选择是 .NET Memory Profiler 或 ANTS Memory Profiler (两者都很好,都有免费试用)。使用这些工具中的一个,找到应该消失后挂在周围的对象。这些工具提供了跟踪挂在对象上的对象链的帮助。有许多关于内存分析的好文章 their sites 在广开的网络上。 |
![]() |
2
1
你可以尝试两件事: 首先,Dropshadow有一些问题,因为它包含一些应该收集Garbadge的参考资料。有关详细信息,请参阅本文: http://blog.ramondeklein.nl/index.php/2009/02/20/memory-leak-with-wpf-resources-in-rare-cases/ 您可以尝试将hasDropshadow设置为false,然后查看您的内存发生了什么。 其次,如果我们有同一菜单的多个contextmenu对象,您可能希望在资源中创建一个contextmenu资源,并使用staticresource扩展名引用它,如下所示:
并在定义上下文菜单时使用它:
希望这有点帮助! |
![]() |
A B · C#Excel自动调整列避免长文本时出错 3 月前 |
![]() |
pseudodev · 失败的测试仅显示堆栈跟踪,不显示完整日志 4 月前 |
![]() |
CactusCake · if语句中应有分号 5 月前 |
![]() |
Bin4ry · 子文件夹中的应用程序设置 5 月前 |