ASP C#更新内容

ASP C#更新内容,c#,multithreading,asp.net,C#,Multithreading,Asp.net,我想这对你来说是个简单的问题。我们开始: 在我的.aspx页面上,我有一个标签Label1和一个按钮Button1,周围有一个更新面板 单击按钮将调用代码隐藏方法,如下所示: protected void Click(object sender, EventArgs e) { ThreadProc("Hello"); Thread.Sleep(2000); ThreadProc("Hello2"); Thread.Sleep(2000); ThreadPr

我想这对你来说是个简单的问题。我们开始:

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

单击按钮将调用代码隐藏方法,如下所示:

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();
}
我希望看到的是,标签会根据代码的功能进行更新和显示(呈现)。因此它应该HelloHello2持续2秒,最后应该显示Hello3。 似乎只渲染最后一个Hello3。有人能解释为什么会发生这种情况,以及我如何实施我的想法吗

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

非常感谢你的帮助

干杯
Christoph

因为代码在web服务器上运行,所以在呈现最终页面并将其发送到客户端的web浏览器之前,它会处理整个方法
单击()。因此,您只会看到最终结果,其中“Hello3”作为
Label1.Text

Thread.Sleep(2000)对代码的影响是,来自web服务器的HTTP响应需要4.x秒,而如果忽略它,则只需几秒钟

但是,如果您想查看对
Label1.Text
的每次更新,可以通过异步AJAX调用来完成


因为代码在web服务器上运行,所以在呈现最终页面并将其发送到客户端的web浏览器之前,它会处理整个方法
Click()
。因此,您只会看到最终结果,其中“Hello3”作为
Label1.Text

Thread.Sleep(2000)对代码的影响是,来自web服务器的HTTP响应需要4.x秒,而如果忽略它,则只需几秒钟

但是,如果您想查看对
Label1.Text
的每次更新,可以通过异步AJAX调用来完成


实际上,代码的作用如下:

  • 该页已被请求
  • 在服务器中,标签会更新几次
  • 该页面将提供标签的最后一个值
客户端只获取最后一个值,因为此代码的输出只是静态HTML


您试图完成的工作必须在客户端进行编码。您可以使用javascript完成这类工作。

实际上,代码的作用如下:

  • 该页已被请求
  • 在服务器中,标签会更新几次
  • 该页面将提供标签的最后一个值
客户端只获取最后一个值,因为此代码的输出只是静态HTML


您试图完成的工作必须在客户端进行编码。您可以使用javascript完成这类工作。

非常感谢您的澄清。顺便说一句,我使用essentialObjects ProgressBar+JavaScript实现了我的任务。非常感谢您的澄清。顺便说一句,我使用essentialObjects ProgressBar+JavaScript实现了我的任务。谢谢