【发布时间】:2025-12-23 20:10:06
【问题描述】:
有什么方法可以取消 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
如果目标的大小或其他一些属性发生变化,则当前绘制的位图已过时 - 因此我想尽快停止渲染。
【问题讨论】:
-
异步/等待没有帮助?
-
我的问题不在于我在等待结果,而是该操作非常占用处理器资源,因此如果我在每次更改时都启动一个新任务/线程,这些操作将总结起来。
-
RenderTargetBitmap 显然没有支持取消的 API。
-
看起来很有希望,但我还没有让它工作。尝试渲染不在可视化树中的 UIElement 时抛出 InvalidOperationException(“未连接到 PresentationSource”)
标签: wpf cancellation rendertargetbitmap