1

我有一种情况,我需要运行一个存储过程(> 5 分钟)并希望我的(silverlight)应用程序保持“活动”

我使用异步 WCF 服务来使我的 UI 线程响应,至少在我再次从同一个数据库请求一些数据之前

然后,只有在 SP 完成后,才会执行其他请求

我可以以某种方式(我想在 SQL 中)将存储过程设置为能够与其他查询一起运行吗?

谢谢

编辑:

  1. 数据库位于 SQL Server 上
  2. [OperationContract(AsyncPattern = true)]在服务方法中从 Linq2Sql 模型启动 SP
  3. 其他数据由 WCF Ria 服务处理(来自 Linq2SQL 模型的域服务,相同的连接字符串)

编辑2:

@dan1111:通过测试,我看到直到 WCF 服务将结果返回给 Silverlight 时,DomainContext '冻结'

最初:

  1. 我用 Thread.Sleep(15000) 调用 WCF 异步方法
  2. 应用程序继续运行良好
  3. 当我转到需要数据的页面时,我请求 DataContext.Load()
  4. DataContext.IsLoading 变为 true
  5. 我必须等待剩下的 15 秒
  6. 现在为先前的 DataContext.Load 触发了完成的事件

请告诉我你的意见

4

1 回答 1

3

一个非常简单的解决方案是打开多个到数据库的连接。每个连接都可以做自己的事情。

但是,还有另一种方法可以实际设置一个异步运行的过程:

http://rusanu.com/2009/08/05/asynchronous-procedure-execution/

于 2012-10-04T07:54:00.660 回答