如何防止SolidColorBrush对象的内存泄漏?

时间:2016-12-01 07:10:44

标签: c# wpf idisposable solidcolorbrush

没有选择处理SolidColorBrush。

如何防止SolidColorBrush对象的内存泄漏?

我甚至无法使用'使用',因为SolidColorBrush没有实现IDisposable接口。

2 个答案:

答案 0 :(得分:2)

不要创建新的SolidColorBrush个实例。

使用System.Windows.Media.Brushes中的predefined brushes

否则,创建一个实例,然后重复使用它。

答案 1 :(得分:0)

这是我的经验。

如果我使用以下代码,则在运行数十万次时会发生巨大的内存泄漏。

SolidColorBrush brush = new SolidColorBrush( helper.ConvertValueToColorCanvas(colorValue, slider.Value));
mainCanvas.rects.Add(new MyCanvas.MyRect() { Brush = brush, Rect = new Rect(p0X + leftMargin + width, p0Y + height, (p2X - p0X), (p2Y - p0Y)) });

但是,如果我使用下面的代码,则泄漏会部分停止。

mainCanvas.rects.Add(new MyCanvas.MyRect() { Brush = new SolidColorBrush( helper.ConvertValueToColorCanvas(colorValue, slider.Value)), Rect = new Rect(p0X + leftMargin + width, p0Y + height, (p2X - p0X), (p2Y - p0Y)) });

因此,与其直接创建构造函数,不如创建新的solidbrush变量,它对我有用。