1

ストアド プロシージャ (> 5 分) を実行する必要があり、(silverlight) アプリケーションを「生きている」ままにしたい状況があります。

これは、少なくとも同じ DB からいくつかのデータを再度要求するまで、UI スレッドが応答するように非同期 WCF サービスを使用して行います。

次に、SPが終了した後にのみ、他のリクエストが実行されます

どうにかして(SQLで)ストアドプロシージャを他のクエリと一緒に実行できるように設定できますか?

ありがとう

編集:

  1. DB は SQL Server 上にあります
  2. [OperationContract(AsyncPattern = true)]service メソッドで Linq2Sql モデルから SP を開始する
  3. その他のデータは WCF Ria Services (Linq2SQL モデルの DomainService、同じ接続文字列) で処理されます。

編集2:

@ dan1111: テストでは、WCF サービスが Silverlight に結果を返す時点まで、DomainContext が「フリーズ」することがわかりました。

最初に:

  1. Thread.Sleep(15000) で WCF Async メソッドを呼び出します
  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 に答える