aspxを使用してチャットを開発しようとしています。すでにasmx+winformで動作するようになりましたが、asmx+aspxで問題が発生しました。
基本的に私がやりたいのは、CheckForMessages
2秒ごとにWebMethodを呼び出し、メッセージがある場合は、それらを更新パネル内のリストボックスに追加して実行することですUpdatePanel1.Update();
。
問題は、winformのようにスレッドを使用してこれを実行できないことです。
void check() {
while (true) {
Thread.Sleep(2000);
string message = CheckForMessages();
if (message != "") {
ListBox1.Items.Add(message);
UpdatePanel1.Update();
}
}
}
私はこのようにスレッドを開始します:
protected void Page_Load(object sender, EventArgs e) {
timer = new Thread(new ThreadStart(check));
timer.Start();
}
例外などはスローされず、プログラムは意図したとおりに実行されます。Webサービスが呼び出され、メッセージがある場合は文字列が返され、スレッドはメッセージをリストに追加してを呼び出しますUpdatePanel1.Update();
。しかし、パネルは更新されていません。
問題は何でしょうか?