如何防止 SolidColorBrush 对象发生内存泄漏?
How do I prevent memory leak from SolidColorBrush object?
没有处理 SolidColorBrush 的选项。
如何防止 SolidColorBrush 对象内存泄漏?
我什至无法使用 'using',因为 SolidColorBrush 没有实现 IDisposable 接口。
不要创建新的 SolidColorBrush
个实例。
使用 System.Windows.Media.Brushes
中的 predefined brushes。
否则,创建一个实例,然后重新使用它。
这是我的经验。
如果我使用下面的代码,会出现巨大的内存泄漏,而 运行 它会发生数十万次。
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 变量,不如直接在构造函数中使用它,它对我有用。
没有处理 SolidColorBrush 的选项。
如何防止 SolidColorBrush 对象内存泄漏?
我什至无法使用 'using',因为 SolidColorBrush 没有实现 IDisposable 接口。
不要创建新的 SolidColorBrush
个实例。
使用 System.Windows.Media.Brushes
中的 predefined brushes。
否则,创建一个实例,然后重新使用它。
这是我的经验。
如果我使用下面的代码,会出现巨大的内存泄漏,而 运行 它会发生数十万次。
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 变量,不如直接在构造函数中使用它,它对我有用。