ASP C#更新内容

chr*_*r1s 1 c# asp.net multithreading

我认为这对你来说是一个简单的问题.开始了:

在我的.aspx页面上,我有一个标签Label1和一个由更新面板包围的按钮Button1.

单击Button会调用代码隐藏方法,如下所示:

protected void Click(object sender, EventArgs e) {
    ThreadProc("Hello");
    Thread.Sleep(2000);
    ThreadProc("Hello2");
    Thread.Sleep(2000);
    ThreadProc("Hello3");
}
void ThreadProc(string info) {
    Label1.Text = info;
    // UpdatePanel1.Update();
}
Run Code Online (Sandbox Code Playgroud)

我希望看到的是,Label会根据代码的内容进行更新和显示(呈现).所以它应该是Hello,Hello2持续2秒,最后应该显示Hello3.似乎只渲染了最后一个Hello3.有人可以解释为什么会发生这种情况以及我如何实现我的想法?

我尝试完成的总体任务是单击该按钮会调用查询不同页面的多线程函数.每当工作线程从他的任务返回时,它应该用新添加的记录更新gridview.在这里,问题是相同的:只有在所有线程完成其工作之后,才会更新webpart.

非常感谢您的帮助!

干杯克里斯托弗

Joh*_*hnB 6

由于代码在Web服务器上运行,因此它会Click()在呈现最终页面并将其发送到客户端的Web浏览器之前处理整个方法.因此,您只能看到最终结果,其中包含"Hello3" Label1.Text.

Thread.Sleep(2000)对您的代码的影响是来自Web服务器的HTTP响应需要4.x秒而不是只有几分之一秒,如果您将其删除.

但是,如果要查看每个更新Label1.Text,可以使用异步AJAX调用来执行此操作.