sHi All,
我正在使用带有RIA服务的silverlight 3。我想知道如何处理域服务类中的慢操作?我的手术需要几分钟。在客户端等待来自服务器的响应时,我在一分钟后得到WCF超时。
也许是另一种方法?是否可以告诉域服务类启动操作,然后每5秒轮询一次服务器以查看它是否已完成。
我尝试实现这个,我遇到的问题是域服务类是我调用的每个域服务方法的新实例。它是无状态的意思是我不能让域服务通过我的操作启动一个线程,然后来检查它。
E.g。
从客户端调用域服务 - “启动操作”(启动新线程)
从客户端调用域服务 - '已完成操作' - 这不起作用,因为我正在调用域服务的新实例
有什么想法吗?
答案 0 :(得分:1)
您可以让您的服务操作返回某种请求标识符,该标识符存储在域服务上的静态成员(例如,将id与请求结果和状态相关联的字典)中。该服务将生成一个线程来异步处理此请求(防止WCF超时)。静态成员在完成后由线程更新。
然后,您可以使用标识符从SilverLight轮询。域服务的新实例将使用静态成员返回状态和结果。