首页 > 解决方案 > 使用 WPF Canvas 进行内存管理 - 大量(相同)对象

问题描述

问:WPF 画布可以在几个不同的地方绘制同一个子对象或对象,还是每个子对象/对象必须是唯一的?

我有一个 WPF 画布,我在其上绘制大量对象。它们中的大多数是许多相同的图像,据我所知,每个都必须是唯一创建的,因为 Canvas似乎无法Children.Add()在几个不同的地方绘制(或者更确切地说)相同的图像(除非有办法做到这一点 - - 这将是可取的)。在绘制所有对象以将内存占用缩小到合理的大小(至少对于 WPF 项目)之后,我不得不手动执行System.GC.Collect()几次。内存占用从绘制图像之前的大约 80MB 立即变为大约 225MB之后,直到System.GC.Collect()被解雇几次后才会下降,再次回到大约 80MB 左右。

我也在 F# 中以编程方式执行此操作,因此我没有使用任何普通的 XAML,如果这有什么不同的话。

标签: wpfcanvasmemory-managementf#

解决方案


推荐阅读