从工作线程使用CacheMode

时间:2013-11-28 14:11:56

标签: c# .net wpf multithreading xaml

我正在使用包含大量元素的WPF Canvas。它需要能够平移和缩放。 WPF无法处理画布的布局,因为它有太多的元素(我不知道有多少,但XAML文件超过20mb)。

使用缩放对画布进行缩放和平移,并在画布'rendertransform上翻译变换。

我发现的一个好方法是使用CacheMode。这解决了所有平移问题,因为我为缩放级别生成了缓存并设置了它。很容易,像这样:

canvas.CacheMode = new BitmapCache(scale);

问题在于我每次缩放比例时都需要这样做(即用户放大时)。

我知道渲染画布需要一些时间,这可能是不可避免的。但是,如何将该渲染移动到另一个线程,以便它不会阻止整个UI?

我理解后台工作者和调度程序等的概念,但我不知道如何处理这个问题,当实际占用的任务是我只能在UI线程中访问的属性的设置时

是否有可能以某种方式在另一个线程中生成缓存,然后以某种方式将其传输到UI?

关于如何减轻对UI的影响的任何其他好主意?

0 个答案:

没有答案