介绍一下Silverlight中的两种线程
1. UI Thread
UI 线程为主要工作线程,主要负责处理以下事情:
a.输入
b.分析和创建控件(xaml)
c.在第一时间画所有可见的视图
d.回调函数和其他用户代码
因为UI线程处理以上这些事情,所以保持这个线程free是非常必要的。维持一个轻的(lightweight)UI线程是一个好的程序的关键。后面将详细讨论如何显示UI线程陷入困境和debug使它这个现象产生。
2.Compositor Thread(简称C线程)
C线程对于WP7来说是一个新的成员。实际上,C线程设计的很轻便,从而很方便的能把纹理结合到GPU去。C线程也操作一些动画类型,这样,这些动画能通过简单的GPU上的纹理操作完全的实现出来。动画(animation)是关键。为了促使C线程改变,动画必须被定义成storyboard;使用animation属性将不会使用C线程来使用。下面是支持的动画类型的列表
a.不透明度
b.缩放变化(在一个较小的范围 -- 一旦缩放大小为原始尺寸的50%将会在UI线程上出发一次re-rastersize。这保护了比较差的视觉效果,re-rastersize不会继续触发除非再次缩放50%)
c.移动、旋转变化
d.平面投影
然而,也有一些情况是上述动画无法再C线程上执行。下面的动画list将在UI线程上执行
a.不透明蒙板
b.不规则图形剪裁
c.2k*2k像素以上的纹理动画
continuing...