1

ASP.NET 4.0 上の Web アプリケーションで ASP.NET 2.0 の非同期ページ機能を使用しています。メソッドを使用してタスクの開始操作と終了操作を設定しました。ページの読み込み時にAddOnPreRenderCompleteAsync「 」というラベルがoperation started表示され、開始タスクが開始されます。

非同期操作が完了するまで、このラベルが表示されないのはなぜですか? 実際には、同期操作と同じくらい優れています。

非同期タスクが同時に実行されている間、ページをロードしてラベルを表示するべきではありませんか?

4

1 に答える 1

1

非同期操作が完了するまで、このラベルが表示されないのはなぜですか?

サーバー側でのみ非同期操作を作成しているためです。概念を完全に理解するには、 ASP.Net ページのライフサイクルを理解する必要があります。簡単に言えば、ページが完全に処理されるまで、ユーザーへの応答は返されません。

それで、あなたは疑問に思うかもしれません... では、どのようなメリットがあるのでしょうか? 実際の利点はスケーラビリティです。ASP.Net は、要求を処理するために使用される固定数のスレッドを提供します。最大数のスレッドが使用されると、着信要求がキューに配置され、Web アプリケーションをブロックする可能性があります。

非同期メソッドを呼び出すと(あなたの場合のように)、ASP.Netで使用されるスレッドが解放され、着信要求を処理するために使用できます。時間のかかる操作が終了すると、ページの軽いインスタンスが新しいスレッドで再作成され、終了メソッドが処理されます

操作の進行状況を表示する場合は、AJAX を使用してサーバー メソッドを呼び出す必要があります。

非同期タスクが同時に実行されている間、ページをロードしてラベルを表示するべきではありませんか?

いいえ

詳細については:

asp.netwebアプリケーションで最初に非同期結果を表示するにはどうすればよいですか?

于 2012-07-16T08:53:51.670 に答える