实施例: 如果我在OnRender方法中创建一个Geometry,它就不会像其他地一样在其他地方使用:
protected override void OnRender(DrawingContext dc)
{
base.OnRender(dc);
var geometry = new RectangleGeometry(new Rect(0, 0, 100, 100));
geometry.Freeze();
dc.RenderGeometry(Brushes.Red, null, geometry);
}
这里的Freeze()
电话是否仍然有所不同?
答案 0 :(得分:1)
这取决于。 Freeze
会使您的代码更快,因为WPF不再关心很多东西,因为冻结的对象无法修改。因此,如果您的代码频繁使用某些对象并且存在性能问题,那么您应该尝试冻结它。另一方面 - 如果代码根本没有给你任何性能问题,那么你可能不应该关心冻结它(你知道,过早优化是所有邪恶的根源)。
如果您想确保没有任何东西可以修改您的对象,您也可以使用Freeze
。这样,您可以保证,您在冻结之前设置的值将始终相同。但这取决于您的要求。
你还应该检查this以获得关于冻结对象的一些基本想法,然后在冻结时可能会更清楚。