我正在尝试使用如下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();

10-07 19:24
查看更多