C# 是否可以从另一个线程取消渲染目标上的绘制?

C# 是否可以从另一个线程取消渲染目标上的绘制?,c#,direct2d,sharpdx,C#,Direct2d,Sharpdx,出于美观原因,Direct2D渲染循环在其自己的线程上运行。无论主线程上的窗口大小或其他消息泵块如何,这都可以实现平滑和即时的动画。除非通过鼠标悬停、滚动、窗口大小调整等使场景无效,否则此渲染线程在大多数情况下都会被阻止 一旦绘图代码调用渲染目标,我看不到取消演示的方法。如果窗口以某种方式无效,场景将被丢弃并重新绘制。我该怎么做才能回到一个干净的状态,为下一个开始做好准备,而不完成和呈现场景?我是否可以导致渲染错误中断将跳过演示文稿的绘图线程?是的,请尝试导致错误。例如,renderTarget

出于美观原因,Direct2D渲染循环在其自己的线程上运行。无论主线程上的窗口大小或其他消息泵块如何,这都可以实现平滑和即时的动画。除非通过鼠标悬停、滚动、窗口大小调整等使场景无效,否则此渲染线程在大多数情况下都会被阻止


一旦绘图代码调用渲染目标,我看不到取消演示的方法。如果窗口以某种方式无效,场景将被丢弃并重新绘制。我该怎么做才能回到一个干净的状态,为下一个开始做好准备,而不完成和呈现场景?我是否可以导致渲染错误中断将跳过演示文稿的绘图线程?

是的,请尝试导致错误。例如,renderTarget->PushAxisAlignedClip,然后renderTarget->EndDraw,而不弹出剪辑。这将导致D2DERR\u PUSH\u POP\u不平衡0x88990016。然后必须刷新目标以重置错误状态

渲染一帧是否需要花费很长的时间,以至于您需要费心?如果是这样的话,你可能有另一个问题。例如,我正在努力缓解。即使是简单的清除,它也会滞后。我想玩我的选择。在调整渲染目标的大小之前,强制呈现场景是低效的。