- - PR -
ASP.NET+Ajax で表示をリアルタイムに
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-08-05 14:39
みなさんこんにちは。
ASP.NET2.0+Ajax1.0でメールを受信するプログラムで、 件数をリアルタイムに表示させたいのですが、 下記のようなサンプルでは最後の数字しか表示されません。 このような場合は どうしたらよろしいのでしょうか? protected void Button1_Click(object sender, EventArgs e) { for (int i = 0; i < 11; i++) { TextBox1.Text = i.ToString(); System.Threading.Thread.Sleep(1000); UpdatePanel1.Update(); } } | ||||
|
投稿日時: 2007-08-05 14:53
いくらループの中で UpdatePanel を更新してもクライアントに通知されるのはイベントハンドラの処理が終了して画面がレンダリングされたときだけです。
Ajax で状況を表示させたいというのなら、クライアントからデータを取りに来させるようにしないとだめですね。 この場合は UpdateProgress や Timer あたりを使ってやる必要があるかな? _________________ かるあ のメモ と スニペット | ||||
|
投稿日時: 2007-08-06 06:01
ASP.NET AJAXのTimerコントロールとJavaScriptを利用した
サンプルを用意しましたので参考にしてください。 JavaScriptを使用して3秒間隔でUpdatePanelを更新する http://www.ajax-asp.dev-asp.net/Goto.aspx?id=070805VB-1 Timerコントロールを使用して3秒間隔でUpdatePanelを更新する http://www.ajax-asp.dev-asp.net/Goto.aspx?id=070805VB-2 _________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 | ||||
|
投稿日時: 2007-08-06 17:51
かるあさん、Accessさん
ありがとうございました。 サーバーの負担が気になりますが、 Timerで処理するようにしました。 下記のようにイベント化してもだめだし、 ループ中はTimerの割り込みも発生しなくて ASP.NETは難しいです・・・ protected void Button2_Click(object sender, EventArgs e) { sample.OnEvent += new SampleEventHandler(Sample_OnEvent); sample.Start(); } void Sample_OnEvent(object sender, EventArgs e) { TextBox1.Text = sample.i.ToString(); UpdatePanel1.Update(); } | ||||
|
投稿日時: 2007-08-06 19:01
Web の仕組みを使う以上、リアルタイムの状況を常に表示させようとしたら その分高負荷なアプリケーションになってしまうのは否めません。 若干勘違いしている感じもしますが HTTP の通信な以上、クライアントからリクエストを受とりレスポンスで画面を描画する という一連の動作を繰り返さないと目的の動作にならないと思います。 _________________ かるあ のメモ と スニペット | ||||
|
投稿日時: 2007-08-06 19:45
かるあさんへ
先週からASP.NETを始めたもので あまりよく理解できてません。すみません。 Timerのような定期的なイベントは負担が大きいので、 イベントが発生したら処理をしたかったのです。 サーバーサイドとTimerなどのクライアントサイドが ごちゃごちゃになってわけがわからなくなりました(笑) メールの受信状況の件数を表示させたかったのですが、 受信中・受信完了の表示だけにすることにしました。 もうすこし勉強してみます。 |
1