2012-04-28 5 views
0

問題: Silverlightアプリケーションで作業していて、WebContentからDomainContextに多くのデータをロードしています。 BusyIndi​​catorは現在のクエリを表示して、いくつかの異なるクエリの実行を開始しますが、ほとんどのデータでクエリに到達するとフリーズします。数分後、サーバーは次のクエリーに応答しません。DomainContextデータのロード中にSil​​verlightがフリーズする

デバッグ/試行されたソリューション: システムは、データを少なくロードすると機能します。私はそれがタイムアウトしたと仮定します。そのため、次のクエリが存在しない、つまりWebサービスに接続できないということが示されます。私はしばらく見回し、人々はタイムアウトと最大結果サイズを増やすことを提案しました。これらは他の問題を解決しているので、彼らはうまく働いている(つまり、それらが適用されている)ことは分かっていますが、この問題は解決しません。

私は、問題を特定して、データをロードすることとは何の関係もない他の愚かな問題ではないことを確認しました。この問題は、Webサービスのクエリ関数(戻り値;)から戻るときに発生します。つまり、Webサービス自体に問題はないはずです。したがって、両方のデバッグプリントが実行され、2番目のデバッグプリントが実行されます。

Webサービスコード:

public IQueryable<Person> GetPeopleWithSubscription() 
{ 
    Debug.WriteLine("Before"); 
    IQueryable<Person> result = test(); 
    Debug.WriteLine("After " + result.Count().ToString()); 
    return result; 
} 

private IQueryable<Person> test() 
{ 
    return this.ObjectContext.People.Where(p => 
     p.Subscriptions.Count > 0 || 
     p.Subscriptions1.Count > 0 || 
     p.ID < 0); 
} 

電話番号:古いクライアント(すなわち、問題が発生する前)はまだ動作しますので、また

... 
_context.Load(_context.GetSubscriptionTypesQuery(), DataLoaded, false); 
... 

は、問題は、クライアント側であるように思われます新しいサーバーでしかし、私は問題が発生してからリポジトリ内の差分を調べてきましたが、違いが生じるはずのものは見つかりませんでした(そこにはないとは言いません)。

誰でもこの問題を解決できますか?詳しい情報が必要な場合は、私に知らせてください。

答えて

0

最近、WCFフレームワークがどのように機能し、その背後にある哲学について読みましたか。マイクロソフトでは、GUIをブロックしている場合に、特にタイムアウト時間の再生を推奨していません。彼らは、通話が完了するまでに60秒以上かかる場合、再設計が必要になるかもしれないと主張している。ページングの使用を検討しましたが、このuiパターンはすべての種類のデータには当てはまらないかもしれないが、多くのデータを読み込んでいる場合、ユーザーは同時にそれをすべて確認する必要はないようです。

私は2,3週間前から私にも同様の問題がありました。マルチスレッド設計を使用して複数の挿入を実行するようにWebサービスの実装を変更しました。これにより、サービスの処理時間を60秒未満に短縮することができました。

うまくいけば、これはあなたを助けるあり、

乾杯、

関連する問題