Silverlight 多线程编程全解析
1. Silverlight 线程类特点
经验丰富的 .NET 程序员会发现,Silverlight 版本的 Thread 类缺少了一些细节。在 Silverlight 中:
- 所有线程都是后台线程。
- 无法设置线程优先级。
- 不能暂时暂停并恢复线程。
Thread 类的 Abort() 方法虽能通过未处理异常终止线程,但该方法带有 Security - Critical 属性,只能由 Silverlight 插件调用,应用程序代码无法调用。
2. 多线程编程挑战
多线程编程的一大挑战是在后台线程和主应用程序线程之间进行通信。启动线程时通过参数传递信息相对容易,但在运行中与线程通信或线程完成时返回数据则较为困难。可能需要使用锁来避免同一数据被两个线程同时访问,使用封送处理确保不通过后台线程访问用户界面元素。而且,线程问题不会在编译时发出警告,也不一定会导致明显的错误,可能会引发一些难以诊断的细微问题。
3. 将代码封送到用户界面线程
Silverlight 支持单线程单元模型,类似于 .NET 客户端应用程序(如 WPF 和 Windows Forms 应用)。在该模型中,单个线程运行整个应用程序并拥有所有代表用户界面元素的对象,这些元素具有线程关联性,创建它们的线程拥有它们,其他线程不能直接与之交互。若违反此规则,如从后台线程访问用户界面对象,会导致异常、程序锁定或其他细微问题。
为保证应用程序稳
超级会员免费看
订阅专栏 解锁全文
85

被折叠的 条评论
为什么被折叠?



