2010-02-10 44 views
0

sHi全部,RIA服务域服务类中的缓慢操作

我使用silverlight 3与RIA服务。我想知道如何处理域服务类中的慢操作?我有一个需要几分钟的操作。一分钟之后,客户端正在等待服务器的响应,我得到一个WCF超时。

另一种方法也许吗?可以告诉域服务类来启动一个操作,然后每5秒轮询一次服务器以查看它是否完成。

我试着实现这个,我遇到的问题是域服务类是我调用的每个域服务方法的新实例。这是无状态的意思,我不能让域服务启动一个线程与我的操作,以后来检查它。

例如从客户端

呼叫域服务 - “开始运作”(这将启动一个新的线程)从客户

呼叫域服务 - “在运行完成” - 这不工作,因为我打电话的新实例域名服务

任何想法?

回答

1

您可以让您的服务操作返回某种类型的请求标识符,并存储在域服务的静态成员(例如,将id与请求结果和状态关联的字典)中。该服务会产生一个线程异步处理此请求(防止WCF超时)。线程完成时,静态成员将被线程更新。

然后,您可以使用标识符从SilverLight进行轮询。域服务的新实例将使用静态成员来返回状态和结果。