2012-10-04 87 views
1

我有一个情况我需要运行一个存储过程(> 5分钟),并希望我的(Silverlight的)应用程序保持“活”运行查询的SQL,而大的存储过程的执行

这我做我的UI线程异步WCF服务来响应,至少直到我要求的一些数据来自同一DB再次

然后,SP操作完成后才会其他请求被执行

我可以以某种方式(在SQL我想)设置storedprocedure能够与其他查询一起运行?

感谢

编辑:

  1. 数据库是SQL Server的
  2. [OperationContract(AsyncPattern = true)]服务方法
  3. 其他
  4. 数据与WCF RIA服务处理(的DomainService从开始从LINQ2SQL模型SP上Linq2SQL模型,相同的连接字符串)

编辑2:

@ dan1111:随着测试中,我看到了,直到点时,WCF服务返回结果Silverlight的,DomainContext '冻结'

最初:

  1. 我打电话WCF异步方法与Thread.Sleep(15000)
  2. 应用程序继续工作良好
  3. 当我转到需要数据的页面时,我请求DataContext.Load( )
  4. DataContext.IsLoading成为真正
  5. 我必须等待15秒
  6. 现在完成的事件为前DataContext.Load发射的剩余

请告诉我你的意见

+1

哪些DBMS您使用的? PostgreSQL的?甲骨文? DB2?火鸟? –

+0

使用除'alive'查询以外的其他连接执行存储过程。 – vstrien

回答

3

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

然而,还有另一种方式来做到这一点,实际上建立异步运行的程序:

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

+0

刚刚尝试过新的连接,它是完全一样的:( – dvox

+0

@dvox,我无法从您提供的信息中判断它是代码问题还是数据库问题。第二个连接需要单独使用线程在你的代码;即它需要异步运行。 – dan1111

+0

你是什么意思'独立线程'? 在客户端(silverlight):对服务的调用在单独的线程中启动 在服务器端:连接在服务方法 – dvox