在 WPF 中取消 long 运行 渲染操作

Cancel long running render operation in WPF

有没有什么方法可以取消 WPF 中可能很长的 运行 渲染操作? 就我而言,我想将复杂控件(在非 UI 线程中)渲染到位图。

var bitmap = new RenderTargetBitmap((int)RenderSize.Width, (int)RenderSize.Height, 96, 96, PixelFormats.Default);
bitmap.Render(visual);    //May take several seconds, but the result may be obsolete

如果目标的大小或其他一些属性发生变化,则当前绘制的位图已过时 - 因此我想尽快停止渲染。

Is there any way to cancel a possibly long running render operation in WPF?

简答:否

您无法取消不支持取消的API。

诸如 RenderTargetBitmap.Render 之类的同步 API 在完成或抛出异常之前不会 return。恐怕调用后不能取消。

根据位图的使用方式和位置,您可以考虑在后台线程上渲染它。