Silverlight + RIA服务:如何在另一个调用操作完成之前从一个调用操作返回?

时间:2013-08-30 22:50:49

标签: asp.net .net wcf silverlight wcf-ria-services

我无法轮询以获取域服务中长时间运行的调用操作的状态。具体来说,在长时间运行的调用操作完成之后,对用于轮询状态的调用操作函数的所有调用都不会返回。

以下是详细信息:

  1. 我正在使用带有RIA服务的Silverlight 5。
  2. 在我的服务器端域服务类(下面的示例代码)中,我在名为RunLongOperation的调用操作中有一个长时间运行的操作。
  3. 我还有一个名为CheckStatusOfLongOperation的第二个调用操作函数,它检索长时间运行的操作的状态。
  4. 在我的Silverlight客户端中,我调用RunLongOperation。在那之后,每5秒钟,我调用CheckStatusOfLongOperation。
  5. 根据Fiddler的说法,每隔5秒钟,就会调用CheckStatusOfLongOperation。但是,在RunLongOperation完成之前,任何调用都没有响应。
  6. 如何让CheckStatusOfLongOperation更快返回?

    ASP.NET服务器代码:

    Public Class MyDomainService
        Inherits DomainService
    
        <Invoke()>
        Public Function RunLongOperation() As String
    
            'Long running operation, some database queries,
            'but mostly in-memory operations
    
        End Function
    
        <Invoke()>
        Public Function CheckStatusOfLongOperation() As String
    
            'Checks a single variable and return status
    
        End Function
    
    End Class
    

1 个答案:

答案 0 :(得分:0)

您可能会看到锁定会话状态。点击此处查看有关如何关闭锁定的说明:http://blogs.microsoft.co.il/blogs/idof/archive/2010/09/27/asp-net-compatible-wcf-services-concurrency-problem.aspx