【发布时间】:2012-09-28 18:26:35
【问题描述】:
我有一些渲染代码,它依赖于DrawingContext.PushClip 和对应的Pop 方法。
protected override void OnRender(DrawingContext drawingContext)
{
drawingContext.PushClip(whatever);
OnRenderInternal(...);
drawingContext.Pop();
}
现在,让我们假设在
OnRenderInternal方法中发生了一些非常糟糕的事情并且它抛出了一个异常(在这种情况下Pop永远不会被调用)。这是否会破坏整个渲染过程,或者绘图上下文会在执行其他操作之前将自身恢复到某种“安全”状态(并且不会对其他可渲染项进行剪辑)?基本上,我是否应该始终关心在执行渲染操作时将绘图上下文恢复到其初始状态?
我意识到在这种简单的情况下,我可以通过使用
try-finally语句来避免麻烦,但是如果我忘记保留正确的Push / Pop堆栈会发生什么?
【问题讨论】:
标签: c# .net wpf user-interface render