【发布时间】:2023-03-31 23:37:01
【问题描述】:
所以我的 .aspx 页面中有一个按钮和四个标签。当我单击按钮时,我希望在每个标签休眠几秒钟后为标签分配文本。但是,我希望他们在完成后回帖到页面上。
即。标签 3 需要 3 秒完成,标签 1 需要 5 秒完成,标签 2 需要 7 秒完成,标签 4 需要 12 秒完成。
所以在网页中,我们看到标签 3 出现,然后出现标签 1 等等。并非所有三个同时出现。
.cs
public string ProvincesAndSatesRetunServiceMethod()
{
int min = 1000;
int max = 10000;
var rand = new Random();
Stopwatch time = new Stopwatch();
time.Start();
System.Threading.Thread.Sleep(rand.Next(min, max));
time.Stop();
return " returned from method in " + time.Elapsed.Seconds + "seconds";
}
protected void PostAll_Click(object sender, EventArgs e)
{
Label1.Text = ProvincesAndSatesRetunServiceMethod();
Label2.Text = ProvincesAndSatesRetunServiceMethod();
Label3.Text = "No Responese Received";
Label4.Text = ProvincesAndSatesRetunServiceMethod();
}
.aspx
<%--IRE FAKING SERVICE --%>
<asp:UpdatePanel ID="testUpdatePanel" runat="server">
<ContentTemplate>
<asp:Button ID="btnAllPosts" runat="server" Text="Post All" onclick="PostAll_Click" autopostback="false" />
<asp:Button ID="btnReset" runat="server" Text="Reset" onclick="btnReset_Click" /><br />
<asp:Label ID="Label1" runat="server" /><br />
<asp:Label ID="Label2" runat="server" /><br />
<asp:Label ID="Label3" runat="server" /><br />
<asp:Label ID="Label4" runat="server" /><br />
</ContentTemplate>
</asp:UpdatePanel>
现在所有方法运行完成后,所有标签都会同时在页面上回发。我在现实生活中需要这个功能,在这种情况下,从几个不同的网络调用一个服务,每个网络在完成计算后发回信息。重要的是在它们到达时显示它们,因为用户正在等待它们完成,有些可能需要五分钟。
此服务不受我控制,无法更改。
提前感谢您的帮助!对不起新手的错误:)
编辑:我现在已经能够在异步的 WCF Web 服务中完成这项工作。它工作得很好,但在 AsyncCompleted 方法中,它会在所有线程并行完成后回发。当线程完成时,我需要它们出现在 .aspx 页面上的更新面板中。关于如何做到这一点的任何想法?
提前致谢。
【问题讨论】:
标签: c# asp.net asp.net-ajax