所以我有一個按鈕和四個標籤在我的.aspx頁面。當我點擊按鈕時,我希望標籤在睡眠幾秒後分配文本。不過,我希望他們在完成後回覆頁面。Asp.net僞造異步回傳來模擬真實的服務
即,標籤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>
現在所有的標籤回發的同時網頁上的所有方法都運行完畢後。我在現實生活中需要這種功能,在這種情況下,會從幾個不同的網絡調用一個服務,每個網絡在完成計算後發佈信息。因爲用戶等待他們完成並且有些可能需要長達五分鐘,所以在他們到達時顯示這些信息非常重要。
此服務超出我的控制範圍,無法更改。
非常感謝您的幫助!對不起,因爲newb錯誤:)
編輯:我現在已經能夠在一個WCF Web服務是異步的這項工作。它工作得很好,但在AsyncCompleted方法中,它在所有線程並行完成後回發。我需要它們在線程完成時出現在.aspx頁面的更新面板中。任何想法如何做到這一點?
在此先感謝。
我會在客戶端嘗試一下,看看那是怎麼回事。我不在乎這是否是一個愚蠢的解決方案。這是爲了驗證aspx頁面的概念,而不是異步服務。感謝所有的幫助。 – joncodo