4

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

4

1 回答 1

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 线程上返回,通常会导致性能问题
  • 有一些巫术可以实现最高数量的客户端+服务器代码重用
于 2012-08-15T17:47:43.827 回答