2012-01-10 14 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(); 

ページがロードされたスレッドで試してみました。しかし、私はスレッドからの応答を得るたびに、各セクションのデータを表示する必要があります。 Thread1が完了したら、私はSection1のデータを表示したい(thread2と3がまだ動作していても)。どうすれば.NETでこれを達成できますか?

+1

使用している.netのバージョン –

+0

これはiframeを使用して行うことができます。 –

+0

.NET 3.5を使用しています – Santhosh

答えて

5

AJAXを使用すると、ユーザーはすぐに何かを見ることができます。

+0

一度に3つのajaxリクエストを送信するにはどうすればよいですか?私がAjaxを使用している場合は、各セクションごとに個別のリクエストを送信する必要があります。それは私のパフォーマンスを改善するのに役立ちません。私が間違っている場合や、Ajaxを使用している他の方法について教えてください。 :) – Santhosh

+0

各リクエストが非同期(したがって、名前:非同期JavaScriptとXML)であるため、3つのリクエストを送信しても、AJAXはパフォーマンスを向上させます。ページがロードされている間は、個々のセクションを個別にロードしてから、コールバックがサーバー側から一度レンダリングされます。だから、AJAXはあなたのパフォーマンスを最も確実に向上させます。ページが読み込まれたときに3つのリクエストを開始するだけです。 –

1

は、私は(すべてがなどをポストバックする必要がない、それは静的なデータであるすなわち)あなたがあなたのページの複雑さと複雑さに応じて、あなたが試すことができ、比較的簡単なオプションのカップルを持っていると思います:

1 )ページを3つの別々のページに分けて、元のページにフレームやiframeを追加し、新しいページにフレームを誘導します。

2)ページを3つのユーザーコントロールに分け、それらを更新パネル内のページに追加します。

コントロールのコードビハインドでは、初期ページの読み込み(つまりポストバックではない)で読み込みアクションを実行しないでください。

コントロールコンテンツを読み込むには、updatepanelのボタンをクリックしてポストバックを強制するような単純な操作を行うwindow.onloadイベントまたは(page.registerstartupスクリプト)にjavascriptを追加します。ただし、各ユーザーコントロールのwindow.settimeoutでこれを行うようにして、最初のものを完了するまで待つ必要はありません。

これは、ユーザーコントロールの非同期読み込みを開始します。

関連する問題