2012-10-04 89 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