我正在通過從不同服務器獲取數據來顯示系統當前狀態的頁面。asp.net多線程頁面
在我的頁面上,我有五個不同的標籤和一個按鈕。我想要一次點擊按鈕,五個不同的線程從服務器獲取數據並更新相應的標籤值。我已經用下面的代碼
protected void Page_Load(object sender, EventArgs e)
{
Thread t = new Thread(updateLbl);
t.Start();
}
protected void btnUpdateStatus_Click(object sender, EventArgs e)
{
Thread[] arrThread = new Thread[5];
for (int i = 0; i < arrThread.Length; i++)
{
arrThread[i] = new Thread(new ParameterizedThreadStart(Update));
arrThread[i].Name = "Thread" + (i + 1).ToString();
arrThread[i].Start(
new Parameters()
{
id = i + 1,
label = this.Master.FindControl("MainContent").FindControl ("Label" + (i + 1).ToString()) as Label
} as object);
}
}
public void Update(object o)
{
Parameters p = o as Parameters;
if (p != null && p.label != null)
{
p.label.Text = GetSystemState(p.id);
}
}
class Parameters
{
public int id { get; set; }
public Label label { get; set; }
}
它確實更新標籤,但頁面上的值繼續加載,直到從服務器中的所有值都收回,然後在頁面上一次顯示他們測試應用程序。
我想要一些東西,如果一個線程檢索到它的數據,它的相應標籤必須更新,並且客戶可以使用其他進程是否檢索到他們的數據,並且他們必須在檢索到數據後立即更新。
但是,這不是ASP.NET的本質頁面生命週期。過程和完成HTML後的代碼已發佈。使用HTML5我認爲你可以更新個別元素,但我不知道如何。 – Paparazzi 2012-07-28 20:52:20
是不是有什麼辦法,我可以使用ajax或頁面方法獲得頁面上的每個控件的部分更新 – 2012-07-28 20:54:33