3

Web ページの 1 つに、完全​​にサーバー上で実行される非常に長いsubmit()タイプの関数があり、進行状況を示すためにクライアントに進行状況バーを表示したいと考えています。

20%何かを見せることができる限り、間隔をあけて更新しても問題ありません。

これは可能ですか?多分ある種の制御runat="server"?私はここでアイデアを失いました。

4

2 に答える 2

4

可能ですが、Web ベースの環境で行うのは、たとえばデスクトップ ベースの環境よりもかなり困難です。

あなたがしなければならないことは、リクエストをサーバーに送信し、サーバーに非同期タスクを開始させてから、クライアントに応答を返すことです。その後、クライアントは更新のために定期的にサーバーをポーリングする必要があります (おそらく/理想的には AJAX を使用)。サーバーは、長時間実行されるタスクの本体内で、クライアントのポーリング メソッドによってアクセスできるセッション値を設定する (または状態を格納する他の方法を使用する) 必要があります。

これは厄介で、面倒で、非効率的であるため、これを実行するユーザーが多数いる場合は、これを実行したくないでしょう。

Microsoft による実装例を次に示しますこの例ではUpdatePanel、オブジェクト、ASP タイマーなどを使用しているため、コードの記述がかなり簡単になりますが (それでも、それほどきれいではありません)、これらのコンポーネントはかなり「重い」ことに注意してください。明示的な AJAX 呼び出しを使用したり、完全なポストバックを実行するのではなく Web メソッドを作成したりすると、パフォーマンスが大幅に向上します。私が言ったように、最高の場合でも、それはパフォーマンスの悪夢です. 多くのユーザーがいる場合、またはこれが非常に頻繁に実行される操作である場合は、これを行わないでください。ごく一部の管理者ユーザーがたまにしか使用しない場合は、問題にならない可能性があり、ユーザーの観点からは多くのことが追加されます。

于 2012-11-26T22:13:30.073 に答える
0

.net 4.5 の async と await を見てみましょう。

ASP.NET MVC 4 での非同期メソッドの使用-- (申し訳ありませんが、MVC の例)

次に、進行状況バーを使用してこの例を確認してください

于 2012-11-26T22:19:43.130 に答える