0

マルチスレッドを使用して、ページのコンテンツを更新/表示しています。ページは複数の(およびネストされた)更新パネルを使用しています。現在、次のロジックを使用してページを更新しています。

私には7つのスレッドがあり、各スレッドはデータベースにクエリを実行してデータを取得し、ページの特定のセクションに表示します。スレッドを開始して2分間待機します。いくつかのスレッドがまだ機能している場合は、2分間経過した後、それらを中断して、入力されたデータをページに表示します。これらのスレッドの呼び出しは、ページの読み込みイベントで行われます。

ここでの問題は、ページが読み込まれる前に特定の時間待機する必要があることです。その後、その制限時間の後、ページにデータが入力されて表示されます。ユーザーはページを見るのに長い間待つ必要があり、それは本当に悪い印象を与えます。

2分の制限を削除すると、ページは高速にレンダリングされますが、すべてのデータが表示されるわけではありません。

ここで私が欲しいのは、スレッドを呼び出すときに、すべてを待つ必要はありません。1つのスレッドが完了すると、ページにデータが表示され、他のスレッドが完了するとすぐに、それに応じてデータが表示されます。

4

1 に答える 1

0

多くのテクニックをテストした後、この問題の解決策を見つけました。

これを実装するために、スレッドを使用する必要はありません。ページを呼び出すと、サーバーはこのページのオブジェクトを作成し、必要なすべての実行を実行してから、このページをレンダリングし、サーバー上のオブジェクトを破棄して、レンダリングされたページをクライアントブラウザに送信します。したがって、レンダリング後、スレッドの応答を受信できません。スレッドの応答を受信するには、ページの明示的なレンダリングを停止する必要があります(これにより遅延が発生しますが、これは望ましくありません)。

したがって、私たちのソリューションは、WebメソッドでJSON Ajax APIを使用しています(複雑なオブジェクトを処理している場合は、シリアル化と逆シリアル化を使用します)。

すべてのコントロールを含むページをロードし、ページのonloadイベントをロードし、JSON APIを使用してWebメソッドを呼び出すjavascriptメソッドを呼び出し、Webメソッドから応答を受け取った後、JavaScript/JQueryを使用してそれぞれのコントロールを手動で更新する必要があります。

于 2012-12-27T08:00:05.650 に答える