2012-01-10 4 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이 완료되면 Section2에 대한 데이터를 표시하려고합니다 (thread2와 3이 아직 실행중인 경우에도 마찬가지입니다). 어떻게하면 .NET에서이 작업을 수행 할 수 있습니까?

+1

사용중인 .net의 버전 –

+0

iframe을 사용하여 수행 할 수 있습니다. –

+0

.NET 3.5을 사용 중입니다 – Santhosh

답변

5

사용자가 바로 볼 수 있도록 AJAX을 사용하는 것이 좋습니다.

+0

한 번에 3 건의 아약스 요청을 보내려면 어떻게해야합니까? Ajax를 사용하는 경우 각 섹션에 대해 개별 요청을 보내야합니다. 성능 향상에 도움이되지 않습니다. 내가 잘못했거나 Ajax를 사용하는 다른 방법이 있다면 알려주십시오. :) – Santhosh

+0

AJAX는 각 요청이 비동기 적이기 때문에 (즉, 이름 : 비동기 JavaScript 및 XML) 세 가지 요청을 보내는 경우에도 성능을 향상시킵니다. 페이지가로드되는 동안 각 개별 섹션을 독립적으로로드 한 다음 서버 측에서 콜백을 한 번 렌더링 할 수 있습니다. 따라서 AJAX가 가장 효과적으로 실적을 향상시킬 것입니다. 페이지가로드되면 세 가지 요청을 시작하십시오. –

1

나는 (모든 등을 다시 게시해야합니까, 그것은 정적 데이터입니다 즉) 당신이 당신의 페이지의 복잡성과 복잡함에 따라, 넌 할 수있어 상대적으로 쉬운 몇 가지 옵션이 있다고 생각 :

1) 페이지를 세 개의 다른 페이지로 분리 한 다음 원래 페이지에 프레임 또는 iframe을 추가하고 새 페이지로 프레임을 보내십시오.

2) 페이지를 세 개의 사용자 컨트롤로 분리하고 업데이트 패널의 페이지에 추가하십시오.

컨트롤의 코드 숨김에서 초기 페이지로드 (즉, 다시 게시가 아님)에로드 작업을 수행하지 마십시오.

제어 내용을로드하려면 updatepanel의 버튼을 클릭하는 것과 같은 간단한 작업을 수행하는 window.onload 이벤트 또는 (page.registerstartup 스크립트)에 javascript를 추가하여 포스트 백을 강제 실행하십시오. 그러나 각 사용자 정의 컨트롤에 대해 window.settimeout에서이 작업을 수행해야하므로 첫 번째 작업이 완료 될 때까지 기다릴 필요가 없습니다.

사용자 컨트롤의 비동기 로딩을 시작합니다.

관련 문제