在非UI线程上运行RIA服务

Sam*_*yan 4 silverlight multithreading backgroundworker wcf-ria-services

我试图从非UI线程进行RIA服务调用.
我通过打开新线程和后台工作程序进行了调用,但是对于这两种情况,回调都在UI线程上运行.
是否可以在调用者线程上执行回调,而不是UI?
谢谢

Ed *_*pel 5

TL;博士

  • 使用WCF
  • 自己将结果编组到UI线程中

WCF RIA是为了在UI线程上工作而构建的

WCF RIA主要用于UI线程.这显然有很多优点和缺点; 在你的情况下大多是利弊 我无法找到这个设计的确切文档,但是,通过肯定UI线程来回答关于该主题的大多数问题.

Domain Context Load和SubmitChanges以异步方式执行.他们从线程池中获取一个线程,对服务器进行必要的调用,当这些调用完成后,工作会自动编组回UI线程以修改实体集合,然后更新UI(可能通过INotificationChanged).

如果您使用WCF来获取自己的数据,您可以在任何您喜欢的线程上执行此操作.调用完成后,您必须编写(或借用)代码以更新UI线程上的UI以避免跨线程异常.

IMO,WCF RIA的主要优点是提供简单问题的简单解决方案:

  • 用于在服务器和客户端之间重用代码的出色工具
  • 服务和客户端代码始终兼容
  • 向/从客户端/服务器传输数据相对简单
  • WCF RIA具有强烈的意见,导致易于学习的编码模式

缺点是难以解决的难题:

  • WCF RIA 强烈反对意见,并不遵循该意见是痛苦的或不可能的
  • 所有操作都在UI线程上返回,通常会导致性能问题
  • 有一些伏都教可以实现最大量的客户端+服务器代码重用