今天在老外的网上发现在一篇asp.net 2.0 中异步调用的文章。。。。。
    http://fredrik.nsquared2.com/viewpost.aspx?PostID=282&showfeedback=true

  按原来的代码写了一下,又不用异步试了一下,感觉调用异步稍微快一点,不过不是很明显..
  可能是调用异步时,webDev.WebServe 占用内存很大的缘故(不调用异步时占用很少...)。。。。
  用过的朋友谈谈....

   异步调用。。
 注意设置 Async="true"

  
<%@ Page Language="C#"  Async="true"   AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        BeginInvoke Thread: <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />

        EndInvoke Thtead: <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label><br />

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns=true>

        </asp:GridView>
        &nbsp;

    </div>


    </form>
</body>
</html>


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class Default3 : System.Web.UI.Page
{
    private SqlCommand _command;

    private SqlConnection _con;

    protected void Page_Load(object sender, EventArgs e)
    {
        PageAsyncTask task = new PageAsyncTask(BeginInvoke, EndInvoke, EndTimeOutInvoke, null);

        Page.RegisterAsyncTask(task);


    }

    public IAsyncResult BeginInvoke(object sender, EventArgs e, AsyncCallback cb, object extraData)
    {

        this._con = new SqlConnection("Asynchronous Processing=true;Data Source=JKDL-PORTAL;Initial Catalog=Northwind;Persist Security Info=True;User ID=sa;Password=111");

        string sProcName = "SELECT *  FROM Customers";
        for (int i = 0; i < 200; i++)
        {
            sProcName += " UNION ALL ";
            sProcName += " SELECT *  FROM Customers ";
        }

        this._command = new SqlCommand(sProcName, this._con);



        Label1.Text = System.Threading.Thread.CurrentThread.GetHashCode().ToString();



        this._con.Open();

        return this._command.BeginExecuteReader(cb, extraData, CommandBehavior.CloseConnection);

    }



    public void EndInvoke(IAsyncResult result)
    {

        SqlDataReader reader = this._command.EndExecuteReader(result);



        if (reader != null && reader.HasRows)
        {

            GridView1.DataSource = reader;
           

            GridView1.DataBind();

        }



        reader.Close();



        Label2.Text = System.Threading.Thread.CurrentThread.GetHashCode().ToString();

    }



    public void EndTimeOutInvoke(IAsyncResult result)
    {

        if (this._con != null && this._con.State != ConnectionState.Closed)

            this._con.Close();



        Response.Write("TimeOut");

    }


}

 非异步时 

 
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class Default6 : System.Web.UI.Page
{
    private SqlCommand _command;

    private SqlConnection _con;
    protected void Page_Load(object sender, EventArgs e)
    {
        this._con = new SqlConnection("Data Source=JKDL-PORTAL;Initial Catalog=Northwind;Persist Security Info=True;User ID=sa;Password=111");

        string sProcName = "SELECT *  FROM Customers";
        for (int i = 0; i < 200; i++)
        {
            sProcName += " UNION ALL ";
            sProcName += " SELECT *  FROM Customers ";
        }
        this._con.Open();
        this._command = new SqlCommand(sProcName, this._con);

        this.GridView1.DataSource = this._command.ExecuteReader();
        this.GridView1.DataBind();

    }
}
posted on 2006-07-02 15:07  volitation  阅读(233)  评论(0)    收藏  举报