ADO Net C# Tutorial

using System;
using System.Data;
using System.Threading;
using System.Data.SqlClient;
class MainClass {
    public static void CallbackHandler(IAsyncResult result) {
        using (SqlCommand cmd = result.AsyncState as SqlCommand) {
            using (SqlDataReader reader = cmd.EndExecuteReader(result)) {
                lock (Console.Out) {
                    Console.WriteLine("Price of the Ten Most Expensive Products:");
                    while (reader.Read()) {
                        Console.WriteLine("  {0} = {1}",
                            reader["TenMostExpensiveProducts"],
                            reader["UnitPrice"]);
                    }
                }
            }
        }
    }
    public static void Main() {
        using (SqlConnection con = new SqlConnection()) {
            con.ConnectionString = @"Data Source = .\sqlexpress;" +
                "Database = Northwind; Integrated Security=SSPI;" +
                "Asynchronous Processing=true";
            SqlCommand cmd = con.CreateCommand();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "Ten Most Expensive Products";
            con.Open();
            cmd.BeginExecuteReader(CallbackHandler, cmd);
            for (int count = 0; count < 10; count++) {
                lock (Console.Out) {
                    Console.WriteLine("{0} : Continue processing...",
                        DateTime.Now.ToString("HH:mm:ss.ffff"));
                }
                Thread.Sleep(500);
            }
        }
    }
}