2012-01-10 87 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中执行此操作,以便您不必等待第一个完成。

这将启动用户控件的异步加载。

相关问题