4
我正在尝试从非UI线程进行RIA服务调用。
我打开新线程和后台工作人员进行调用,但对于这两种情况,回调正在UI线程上运行。
是否可以在调用者线程上执行回调,而不是UI?
感谢在非UI线程上运行RIA服务
我正在尝试从非UI线程进行RIA服务调用。
我打开新线程和后台工作人员进行调用,但对于这两种情况,回调正在UI线程上运行。
是否可以在调用者线程上执行回调,而不是UI?
感谢在非UI线程上运行RIA服务
TL;博士
WCF RIA是建立在做UI线程工作
WCF RIA的设计主要在UI线程上工作。这显然有许多利弊。主要是对你的情况。我很难找到这个设计的明确文档,但是,关于这个主题的大部分问题都是通过确认UI线程来解答的。
域上下文加载和的SubmitChanges异步执行。他们从线程池中取出一个线程,对服务器进行必要的调用,当这些调用完成时,工作将自动编组回UI线程,以修改实体集合并随后更新UI(可能通过INotificationChanged)。
如果您使用WCF获取自己的数据,您可以在任何喜欢的线程上执行此操作。完成调用后,您必须编写(或借用)代码以在UI线程上更新UI,以避免cross thread exceptions。
IMO的WCF RIA给予简单的问题,简单的解决方案的主要优点:
利弊做出艰难的问题,很难或不可能:
感谢您的详细解答。不幸的是,我不能使用WCF,因为我在使用RIA的项目上工作,而且我无法更改该部分,唯一的办法就是使用RIA – 2012-08-15 19:11:14
我已经通过较少的服务器调用获得了更好的性能。对于一次通话,您看到的延迟随着每次连续通话都呈线性增长。如果你有很多数据,你可以尝试分页。祝你好运! – 2012-08-15 19:24:58
我正在绘制类似building的模式,并按chunk加载数据块,所以我最大限度地减少了数据接收延迟,问题在于数据处理部分,数据接收之间的时间间隔(我正在使用fiddler获取该时间)和完成的事件射击。 – 2012-08-15 19:27:50