2010-12-01 34 views
0

asp.netからSilverlightに「ゆっくり」移行し、Webサービス呼び出しが完了した後にいくつかのコードを実行する必要がある状況に対処する方法について質問があります。たとえば、ユーザーがデータグリッド内の行をクリックすると、レコードの編集を可能にするダイアログボックスが表示されます。これには、多数のコンボボックス、チェックボックスなどが含まれています。そのため、コンボボックスごとに最初にデータをロードする必要があります。また、ロードがすべて終了したときよりも、バインドされたエンティティを設定する必要があります。私はこの非同期のことを初めて熟知しているので、いくつかのコールがディスパッチされたかどうかを追跡する何らかの種類のカウンターを持っていると思っていました。負荷が終了したイベント、これに依存するものを進めることができます。しかし、これはそれを行うの非常にclunkyのようです。私は多くの人がこの問題に直面していると確信しています。あなたはどうやってこれをしますか?役立つ場合は、PrismとMVVMアプローチ、Ria ServicesとDtosを使用します。フォームとビジーインジケータを読み込む方法

答えて

0

あなたが説明したことは、かなりの道のりです。ロックやミューテックスを使用すると、より洗練されたことがあるかもしれませんが、カウンターが機能します。あなたはいつでも "進行中"である操作の数を見ることができます。

あなたは順番にあなたのイベントを送出することができますが、それは、非同期操作の全体の目的を台無しにしてしまいます。

UIの各部分を分析すると、いくつかの操作を行うことができる場合があります。すべての非同期イベントのが完了しました。最初に最長の実行操作を開始することを確認することをお勧めしますが、他の短い操作が最初に終了するという保証はありません。すべてのリソースは、呼び出しが行われた時点でクライアントとサーバーの両方で使用可能なリソースに依存します。

+0

SLに組み込まれた魔法があると思いました。このためにAsync CTPから「待機」と「非同期」を使用できますか? – epitka

+0

@epitka - まだ見つからない場合。それはこの種の問題を解決する可能性がありますように非同期CTPが聞こえる - しかし、我々は、満たすためにタイトな期限を持っているし、それはまだV1.0ていないとして、我々はそれを使用することはできません。私たちは新年にそれに着くべきです。 – ChrisF

関連する問題