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) {
while (reader.Read()) {
Console.WriteLine(" {0} = {1}",
reader["ID"],
reader["FirstName"]);
}
}
}
}
}
public static void Main()
{
using (SqlConnection con = new SqlConnection())
{
con.ConnectionString = "server=(local)\\SQLEXPRESS;database=MyDatabase;Integrated Security=SSPI;Asynchronous Processing=true;";
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT ID, FirstName FROM Employee";
con.Open();
cmd.BeginExecuteReader(CallbackHandler, cmd);
// Continue with other processing.
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);
}
}
}
}