Mega Code Archive

 
Categories / ASP.Net Tutorial / ADO Net Database
 

Use of the WaitAny method of processing multiple asynchronous processes (C#)

<%@ 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 OrdersCommand = new SqlCommand();         SqlCommand CustCommand = new SqlCommand();         SqlDataReader OrdersReader;         SqlDataReader CustReader;         IAsyncResult OrdersASyncResult;         IAsyncResult CustAsyncResult;         int WHIndex;         System.Threading.WaitHandle[] WHandles = new System.Threading.WaitHandle[1];         System.Threading.WaitHandle OrdersWHandle;         System.Threading.WaitHandle CustWHandle;         DBCon = new SqlConnection();         DBCon.ConnectionString = ConfigurationManager.ConnectionStrings["DSN_NorthWind"].ConnectionString;         CustCommand.CommandText = " SELECT * FROM Customers WHERE CompanyName = 'A' ";         CustCommand.CommandType = CommandType.Text;         CustCommand.Connection = DBCon;         OrdersCommand.CommandText =                  " SELECT Customers.CompanyName, Customers.ContactName, " +                 " Orders.OrderID, Orders.OrderDate, " +                 " Orders.RequiredDate, Orders.ShippedDate " +                 " FROM Orders, Customers " +                 " WHERE Orders.CustomerID = Customers.CustomerID " +                 " AND Customers.CompanyName = 'Alfreds Futterkiste' " +                 " ORDER BY Customers.CompanyName, Customers.ContactName ";         OrdersCommand.CommandType = CommandType.Text;         OrdersCommand.Connection = DBCon;         DBCon.Open();         CustAsyncResult = CustCommand.BeginExecuteReader();         OrdersASyncResult = OrdersCommand.BeginExecuteReader();         CustWHandle = CustAsyncResult.AsyncWaitHandle;         OrdersWHandle = OrdersASyncResult.AsyncWaitHandle;         WHandles[0] = CustWHandle;         WHandles[1] = OrdersWHandle;         for (int Index = 0; Index < 2; Index++ )         {             WHIndex = System.Threading.WaitHandle.WaitAny(WHandles);             switch (WHIndex)             {                 case 0:                     CustReader = CustCommand.EndExecuteReader(CustAsyncResult);                     gvCustomers.DataSource = CustReader;                     gvCustomers.DataBind();                     break;                 case 1:                     OrdersReader =                         OrdersCommand.EndExecuteReader(OrdersASyncResult);                     gvOrders.DataSource = OrdersReader;                     gvOrders.DataBind();                     break;             }         }         DBCon.Close();     } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">     <title>The Wait Any Approach</title> </head> <body>     <form id="form1" runat="server">     <div>     <asp:GridView ID="gvCustomers" Width="100%" Runat="server"></asp:GridView>     <br /><br />     <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> File: Web.config <configuration>   <connectionStrings>         <add name="DSN_Northwind"               connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"              providerName="System.Data.SqlClient" />     </connectionStrings> </configuration>