我试图从非UI线程执行RIA服务调用。
我使用了开启新线程和背景工作程序进行调用,但是对于这两种情况,回调都在UI线程上运行。
有可能在调用线程上执行回调,而不是在UI上吗?
谢谢
我试图从非UI线程执行RIA服务调用。
我使用了开启新线程和背景工作程序进行调用,但是对于这两种情况,回调都在UI线程上运行。
有可能在调用线程上执行回调,而不是在UI上吗?
谢谢
简而言之
WCF RIA旨在在UI线程上执行工作
WCF RIA的设计主要是在UI线程上工作。这显然有许多优缺点,在你的情况下主要是缺点。我很难找到关于这个设计的确切文档,但大多数与此主题相关的问题都通过肯定UI线程性得到回答。
如果您使用WCF获取自己的数据,可以在任何线程上执行。当调用完成时,您将需要编写(或借用)代码以在UI线程上更新UI,以避免跨线程异常。域上下文加载和SubmitChanges以异步方式执行。它们从线程池中获取一个线程,进行必要的服务器调用,当这些调用完成时,工作会自动转换回UI线程,以修改实体集合并随后更新UI(可能通过INotificationChanged)。