asp.netでの長いプロセス中にユーザーにメッセージを送信するための最良の方法は何ですか。他の言語ではフラッシュメソッドがあり、asp.netにもそれがあることがわかりますが、それが最善の方法ですか?そうでない場合、他にどのようにこれを行うことができますか?
3 に答える
これを行う最善の方法は、長時間実行されるプロセスを実行する別のスレッドを生成し、メイン スレッドで ajax 呼び出しを実行して、長時間実行されるスレッドからステータスを要求し、必要に応じてステータスを表示することです。
これを詳しく説明している比較的優れた記事は、http ://www.devarchive.net/displaying_progress_bar_for_long_running_processes.aspx にあります。
プッシュ通知フレームワーク (comet) http://pokein.codeplex.com/を使用する か、ステータスをデータベースに保存し、ページを更新してステータスを取得するか、たとえば jQuery.ajax() を使用してデータを取得するか、次のようなタイマーで UpdatePanel を更新します。 http://msdn.microsoft.com/en-us/library/cc295400.aspx
いずれにせよ、「進行状況」を現在のセッションまたはデータベースに保存して読み取る必要があります。通常、UI は処理スレッドと直接やり取りすることはありませんが、どちらも更新ステータスを含む何らかの中間媒体とやり取りします。
Adam Tuliper が言ったように、プッシュ通知フレームワークが必要であり、最良の選択は Microsoft の SignalR です。ステータスをどこにでも保存したり、ポーリングを実装したりする必要はありません。SignalR は必要なものすべてをブラウザーにプッシュし、プロセスを (別のスレッドで) 開始した要求は HubContext クラスを介してクライアントに直接メッセージを送信します。詳細はこちらをご覧ください。