在 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。恐怕调用后不能取消。
根据位图的使用方式和位置,您可以考虑在后台线程上渲染它。
有没有什么方法可以取消 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。恐怕调用后不能取消。
根据位图的使用方式和位置,您可以考虑在后台线程上渲染它。