【问题标题】:When I serve an ASP.NET page, can I render the various controls on the page in parallel?当我为 ASP.NET 页面提供服务时,我可以在页面上并行呈现各种控件吗?
【发布时间】:2010-08-10 19:52:41
【问题描述】:

当我为 ASP.NET 页面提供服务时,我可以在页面上并行呈现各种控件吗?

我在页面上有一些 Telerik 控件 (RadGrids),当我逐步浏览正在加载的页面时,似乎这些控件是数据绑定的并且是串行呈现的。 也许这种行为是因为我迷上了调试器。

是否有加载页面并在单独的线程上构建选择控件的方法?这在概念上是可能的还是必须按顺序完成?

【问题讨论】:

    标签: asp.net multithreading rendering


    【解决方案1】:

    您有几个选择。您可以使用 ASP.NET 异步页面模型。想法是您异步加载每个控件的数据,然后在检索数据时将该数据绑定到每个控件。

    看起来像这样:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsAsync) {
            dataSource.GetDataCompleted += 
              new GetDataCompletedEventHandler(GetDataCompleted);
            dataSource.GetDataAsync();
        }
        else {
            _yourCtl.DataSource = dataSource.GetData();
            _yourCtl.DataBind();
        }
    }
    
    void GetDataCompleted(object sender, GetDataCompletedEventArgs e) {
        _yourCtl.DataSource = e.Result;
        _yourCtl.DataBind();
    }
    

    您可以对页面上的每个控件执行相同的操作。最终结果是渲染页面的时间将等于渲染最慢渲染控件的时间。

    另一种方法是使用 AJAX 加载控件。我不熟悉 Telerik RadGrid 控件,但我认为它支持 AJAX。以下是 Telerik 演示页面的链接,该页面展示了如何执行 Telerik 网格的编程客户端绑定:http://demos.telerik.com/aspnet-ajax/grid/examples/client/databinding/defaultcs.aspx

    【讨论】:

      【解决方案2】:

      看看这篇文章,希望它能给你正确的方向:

      http://www.codeproject.com/Articles/38501/Multi-Threading-in-ASP-NET.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-01
        • 2010-10-18
        • 1970-01-01
        • 2018-08-30
        • 2014-06-08
        • 1970-01-01
        • 2017-07-03
        • 2016-09-03
        相关资源
        最近更新 更多