我正在尝试使用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++;
}
}
Run Code Online (Sandbox Code Playgroud)
文本框第一次显示一个变量,但之后没有更新,我做错了什么?我搜索过,人们建议调用Textbox.Update或Textbox.Refresh,但我认为这些已经老了,因为它们不再存在了.
谢谢
您不能使用服务器端代码以这种方式更新客户端值.无论如何,你似乎错过了某种暂停(例如Thread.Sleep),因为目前你的循环将疯狂地失控.
您需要研究使用客户端脚本(即JavaScript)以及类似的内容setTimeout:
https://developer.mozilla.org/en/docs/Web/API/window.setTimeout
这是一个例子:http: //jsfiddle.net/PXN9K/
为糟糕的格式化和稍微懒惰的命名/重构道歉,但我在手机上这样做.
这是来自小提琴的代码,复制在这里为未来的后代.
var i = 0;
var updateTextbox =function()
{ document.getElementById('textbox').value = '' + i; }
var update = function() {
window.setTimeout(function() {
i++;
updateTextbox();
update();
}, 1000);
};
updateTextbox();
update();
Run Code Online (Sandbox Code Playgroud)