首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

asp.net2.0高级编程特别版中ADO.NET的异步处理一节提到的SqlAsyncResult到底哪里来的啊网上搜索都没资料啊程序也运行不了,郁闷!该怎么处

2012-04-02 
asp.net2.0高级编程特别版中ADO.NET的异步处理一节提到的SqlAsyncResult到底哪里来的啊?网上搜索都没资料

asp.net2.0高级编程特别版中ADO.NET的异步处理一节提到的SqlAsyncResult到底哪里来的啊?网上搜索都没资料啊!程序也运行不了,郁闷!!
<%@   Page   Language= "C# "   %>
<%@   Import   Namespace= "System.Data "   %>
<%@   Import   Namespace= "System.Data.SqlClient "   %>
<%@   Import   Namespace= "System.Configuration "   %>

<script   runat= "server ">
        protected   void   Page_Load(object   sender,   EventArgs   e)
        {
                SqlConnection   DBCon;
                SqlCommand   Command   =   new   SqlCommand();
                SqlAsyncResult   ASyncResult;

                DBCon   =   new   SqlConnection();
                Command   =   new   SqlCommand();
                DBCon.ConnectionString   =  
                    ConfigurationManager.ConnectionStrings[ "DSN_NorthWind "].ConnectionString;

                //   Selecting   top   5   records   from   the   Orders   table
                Command.CommandText   =  
                                "SELECT   TOP   5   Customers.CompanyName,   Customers.ContactName,   "   +
                                "Orders.OrderID,   Orders.OrderDate,   "   +
                                "Orders.RequiredDate,   Orders.ShippedDate   "   +
                                "FROM   Orders,   Customers   "   +
                                "WHERE   Orders.CustomerID   =   Customers.CustomerID   "   +
                                "ORDER   BY   Customers.CompanyName,   Customers.ContactName ";

                Command.CommandType   =   CommandType.Text;
                Command.Connection   =   DBCon;

                DBCon.Open();

                //   Starting   the   asynchronous   processing
                AsyncResult   =   Command.BeginExecuteReader(new   AsyncCallback(CBMethod),  
                      CommandBehavior.CloseConnection);
        }

        public   void   CBMethod(SQLAsyncResult   ar)


        {
                SqlDataReader   OrdersReader;

                //   Retrieving   result   from   the   asynchronous   process
                OrdersReader   =   ar.EndExecuteReader(ar);

                //   Displaying   result   on   the   screen
                gvOrders.DataSource   =   OrdersReader;
                gvOrders.DataBind();
        }
</script>

<html   xmlns= "http://www.w3.org/1999/xhtml "   >
<head   id= "Head1 "   runat= "server ">
        <title> The   Call   Back   Approach </title>
</head>
<body>
        <form   id= "form1 "   runat= "server ">
        <div>
        <asp:GridView   ID= "gvOrders "   Width= "100% "   AutoGenerateColumns= "False "                  
          runat= "server ">
              <Columns>
                    <asp:BoundField   HeaderText= "Company   Name "  
                      DataField= "CompanyName "> </asp:BoundField>
                    <asp:BoundField   HeaderText= "Contact   Name "  
                      DataField= "ContactName "> </asp:BoundField>
                    <asp:BoundField   HeaderText= "Order   Date "   DataField= "orderdate "  
                      DataFormatString= "{0:d} "> </asp:BoundField>
                    <asp:BoundField   HeaderText= "Required   Date "   DataField= "requireddate "  
                      DataFormatString= "{0:d} "> </asp:BoundField>
                    <asp:BoundField   HeaderText= "Shipped   Date "   DataField= "shippeddate "  
                      DataFormatString= "{0:d} "> </asp:BoundField>
              </Columns>
        </asp:GridView>  
        </div>
        </form>
</body>
</html>


[解决办法]
这本书很新么?不会是beta版的吧,应该是 返回 IAsyncResult,底下的类型也是DbAsyncResult
------解决方案--------------------


由于databind在页面完成后才被执行,所以显示空白。在
AsyncResult = Command.BeginExecuteReader(new AsyncCallback(CBMethod), CommandBehavior.CloseConnection); 
后加
System.Threading.Thread.Sleep(1000);
DBCon.Close();
数据就能显示了。

[解决办法]
要设置System.Threading.Thread.Sleep(1000); 
那异步回调有什么用呢??
如果被回调的方法执行的时间不止1000ms,那不是又出错??
哪位高手说说??
Wrox的ASP.NET2.0高级编程特别版中的批量更新、MARS、异步调用那几节都有错误...

热点排行