C# 如何在ASP.NET页面中实现异步加载?

C# 如何在ASP.NET页面中实现异步加载?,c#,asp.net,.net,multithreading,asynchronous,C#,Asp.net,.net,Multithreading,Asynchronous,如何在ASP.NET页面中实现异步加载 我的ASP.NET页面中有3个部分。所有部分都是独立的 LoadSection1(); LoadSection2(); LoadSection3(); 每个部分大约需要15秒。我想使用异步加载减少页面加载时间 我试过用线 // Create thread jobs for each section ThreadStart PipelinePerformanceThreadJob = new ThreadStart(LoadPipelineSection)

如何在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已完成,我希望显示第1节的数据(即使thread2和3仍在运行)。如何在.NET?< /P> < P>中实现这一点。我会考虑让用户立即看到一些东西。

< P>我认为你有一些相对简单的选项,你可以尝试,这取决于页面的复杂性和复杂性(即是静态数据,所有东西都必须回发等等):

1) 将页面分成三个不同的页面,然后将框架或iFrame添加到原始页面,并将框架定向到新页面

2) 将页面分成三个用户控件,并将它们添加到更新面板中的页面中

在控件的codebehind中,不要对初始页面加载执行加载操作(即不回发)

要加载控件内容,请将javascript添加到window.onload事件或(page.registerstartupscript)中,该事件执行简单的操作,如单击updatepanel中的按钮,以强制回发。但是,请确保在window.settimeout中为每个用户控件执行此操作,这样就不必等待第一个控件完成


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

您使用的是哪个版本的.net?如何一次发送3个ajax请求?如果我使用Ajax,我需要为每个部分发送单独的请求。这无助于我提高绩效。如果我错了,请告诉我,或者使用Ajax的任何其他方法即使发送三个请求,AJAX也会提高性能,因为每个请求都是异步的(因此,名称为:异步JavaScript和XML)。在加载页面时,每个单独的部分都可以独立加载,然后在服务器端进行回调后呈现。因此,AJAX肯定会提高您的性能。页面加载时,只需启动三个请求。