- PR -

ASP.NET+Ajax で表示をリアルタイムに

1
投稿者投稿内容
dye
会議室デビュー日: 2007/01/30
投稿数: 7
投稿日時: 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();
}
}
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-08-05 14:53
いくらループの中で UpdatePanel を更新してもクライアントに通知されるのはイベントハンドラの処理が終了して画面がレンダリングされたときだけです。

Ajax で状況を表示させたいというのなら、クライアントからデータを取りに来させるようにしないとだめですね。
この場合は UpdateProgress や Timer あたりを使ってやる必要があるかな?
_________________
かるあ のメモスニペット
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 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サンプル集
dye
会議室デビュー日: 2007/01/30
投稿数: 7
投稿日時: 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();
}
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-08-06 19:01
引用:

dyeさんの書き込み (2007-08-06 17:51) より:

サーバーの負担が気になりますが、
Timerで処理するようにしました。


Web の仕組みを使う以上、リアルタイムの状況を常に表示させようとしたら
その分高負荷なアプリケーションになってしまうのは否めません。

若干勘違いしている感じもしますが HTTP の通信な以上、クライアントからリクエストを受とりレスポンスで画面を描画する という一連の動作を繰り返さないと目的の動作にならないと思います。
_________________
かるあ のメモスニペット
dye
会議室デビュー日: 2007/01/30
投稿数: 7
投稿日時: 2007-08-06 19:45
かるあさんへ

先週からASP.NETを始めたもので
あまりよく理解できてません。すみません。

Timerのような定期的なイベントは負担が大きいので、
イベントが発生したら処理をしたかったのです。

サーバーサイドとTimerなどのクライアントサイドが
ごちゃごちゃになってわけがわからなくなりました(笑)

メールの受信状況の件数を表示させたかったのですが、
受信中・受信完了の表示だけにすることにしました。

もうすこし勉強してみます。




1

スキルアップ/キャリアアップ(JOB@IT)