環境:ASP.NET、C#巨大なプロセスの状態をクライアント(ウェブ)に表示する方法
私は、12のテーブルを別のデータベースにエクスポートするWebプログラムを作成しています。ユーザが「エクスポート」ボタンをクリックすると、エクスポートプロセスが開始されます。事は、私はクライアントに "準備中、古いレコードを削除...、エクスポート中...、輸出完了"などのメッセージを表示するのが好きです。
今、12のテーブルが完成するとすべてのステータスを表示しています。
どうすればいいですか?
環境:ASP.NET、C#巨大なプロセスの状態をクライアント(ウェブ)に表示する方法
私は、12のテーブルを別のデータベースにエクスポートするWebプログラムを作成しています。ユーザが「エクスポート」ボタンをクリックすると、エクスポートプロセスが開始されます。事は、私はクライアントに "準備中、古いレコードを削除...、エクスポート中...、輸出完了"などのメッセージを表示するのが好きです。
今、12のテーブルが完成するとすべてのステータスを表示しています。
どうすればいいですか?
この
は、C# でこれを入れて試してみて
Page.RegisterClientScriptBlock( "1"、 "警告( '今テーブルに追加')")プロセスごとにajavascript関数を呼び出します。これは、Webページ上にあるように、長いプロセスを行う
がおそらく良いアイデアではありません、あなたはむしろ、すべての作業を行うWindowsサービスを構築するなどのページ
にタイムアウト設定を変更する必要があるでしょう。このページを使用してプロセスを初期化することができます。サービスは、ページによって読み取られた状態を更新する可能性があります。このようにして、ページはほとんど処理されません。つまり、プロセスを開始し、ステータスの更新をポーリングします。これは単純なjquery/ajax呼び出しで行うことができます。
ステータスページまたはサービスからコンテンツを定期的に読み込むには、JavaScriptタイマーを使用します。
タイマーは非常に簡単です:
setTimeout('checkProcessStatus()', waitTime);
アップデート自体はハイテクのあなたの選択に依存して - 例えばMVCとjQueryを使用している場合:
function checkProcessStatus() {
//dynamically add the html from the status page to <div id="taskStatusPanel"
$('#taskStatusPanel').load('export/status/' + taskId);
//set timer to call this again
setTimeout('checkProcessStatus()', waitTime);
}
その後ExportController.Status
アクションはシンプルを返します現在のステータスのHTMLを表示したビュー。