【问题标题】:How to implement asynchronous loading in ASP.NET page?如何在 ASP.NET 页面中实现异步加载?
【发布时间】:2012-02-06 23:11:53
【问题描述】:

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 中实现这一点?

【问题讨论】:

  • 您使用的 .net 版本

标签: c# asp.net .net multithreading asynchronous


【解决方案1】:

我会考虑使用AJAX,以便用户立即看到某些内容。

【讨论】:

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

我认为您可以尝试几个相对简单的选项,具体取决于页面的复杂性和复杂性(即是否为静态数据,是否所有内容都必须回发等):

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

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

在控件的代码隐藏中,不要在初始页面加载时执行加载操作(即不回发)。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-16
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 2015-01-17
    • 1970-01-01
    • 2011-12-28
    相关资源
    最近更新 更多