我正在尝试使用如下ASP应用程序中的代码更新文本框:
protected void click_handler(object sender, EventArgs e)
{
Thread worker = new Thread(new ThreadStart(thread_function));
worker.Start();
}
protected void thread_function()
{
int i = 0;
while(true)
{
Textbox.Text = i.ToString();
i++;
}
}
文本框第一次显示一个变量,但此后没有更新,我在做什么错?我进行了搜索,建议人们调用Textbox.Update或Textbox.Refresh,但我认为这些文件已经过时了,因为它们已经不存在了。
谢谢
最佳答案
您不能以这种方式使用服务器端代码来更新客户端值。无论如何,您似乎缺少某种暂停(例如Thread.Sleep),因为当前您的循环将疯狂地失控。
您需要研究使用客户端脚本(即JavaScript)以及类似setTimeout
的方法:
https://developer.mozilla.org/en/docs/Web/API/window.setTimeout
这是一个例子:
http://jsfiddle.net/PXN9K/
不好意思的格式化和稍微懒惰的命名/重构,很抱歉,但是我在手机上这样做。
这是 fiddle 的代码,这里复制以备后用。
var i = 0;
var updateTextbox =function()
{ document.getElementById('textbox').value = '' + i; }
var update = function() {
window.setTimeout(function() {
i++;
updateTextbox();
update();
}, 1000);
};
updateTextbox();
update();