2012-01-10 69 views
2

如何在ASP.NET頁面中實現異步加載?如何在ASP.NET頁面中實現異步加載?

我在我的ASP.NET頁面中有3個部分。所有部分都是獨立的。

LoadSection1(); 
LoadSection2(); 
LoadSection3(); 

每個部分大約需要15秒。我想通過異步加載來減少頁面加載時間。

我試圖與線程

// Create thread jobs for each section 
ThreadStart PipelinePerformanceThreadJob = new ThreadStart(LoadPipelineSection); 
ThreadStart CampaignPerformanceThreadJob = new ThreadStart(LoadCampaignSection); 
ThreadStart OperationalThreadJob = new ThreadStart(LoadOperationalSection); 

// Create threads 
Thread PPThread = new Thread(PipelinePerformanceThreadJob); 
Thread CSThread = new Thread(CampaignPerformanceThreadJob); 
Thread OSThread = new Thread(OperationalThreadJob); 

// Start all the threads 
PPThread.Start(); 
CSThread.Start(); 
OSThread.Start(); 

// Join threads with main thread 
PPThread.Join(); 
CSThread.Join(); 
OSThread.Join(); 

頁面加載,一旦它完成了所有的線程。但是,只要我從線程獲得響應,我需要爲每個部分顯示數據。 例如如果線程1完成,我想要顯示Section1的數據(即使線程2和3仍在運行)。我怎樣才能在.NET中實現這一點?

+1

正在使用哪個版本的.net – 2012-01-10 14:40:01

+0

您可以使用iframe來完成。 – 2012-01-10 14:42:23

+0

我正在使用.NET 3.5 – Santhosh 2012-01-12 06:51:56

回答

5

我會考慮使用AJAX,以便用戶可以立即看到某些東西。

+0

如何一次發送3個Ajax請求?如果我使用Ajax,我需要爲每個部分發送單獨的請求。這對我改善表現沒有幫助。請讓我知道,如果我錯了或使用任何其他方法使用Ajax。 :) – Santhosh 2012-01-18 11:36:32

+0

即使您發送三個請求,由於每個請求都是異步的(因此,名稱:Asynchronous JavaScript and XML),AJAX將提高您的性能。當您的頁面正在加載時,每個單獨的部分可以獨立加載,然後在從服務器端進行回調後再渲染。所以AJAX肯定會提高你的表現。在頁面加載時啓動您的三個請求。 – 2012-01-18 13:49:25

1

我認爲你有幾個相對簡單的選項,你可以嘗試,這取決於你的頁面的複雜性和複雜性(即是靜態的數據,什麼都要回發等):

1 )將您的頁面分爲三個不同的頁面,然後將幀或iframe添加到您的原始頁面,並將這些幀指向您的新頁面。

2)將您的頁面分爲三個用戶控件,並將它們添加到更新面板中的頁面。

在控件的代碼隱藏中,不要對初始頁面加載(即不回發)執行加載操作。

要加載控件內容,請將javascript添加到window.onload事件或(page.registerstartupscript),它執行一些簡單的操作,如單擊updatepanel中的按鈕以強制回發。但是,請確保您在每個用戶控件的window.settimeout中執行此操作,以便您不必等待第一個完成。

這將啓動用戶控件的異步加載。