'Declaration Public Overloads Function BeginExecuteReader( _ ByVal behavior As CommandBehavior _ ) As IAsyncResult
public IAsyncResult BeginExecuteReader( CommandBehavior behavior )
Parameters
- behavior
- One of the System.Data.CommandBehavior values.
'Declaration Public Overloads Function BeginExecuteReader( _ ByVal behavior As CommandBehavior _ ) As IAsyncResult
public IAsyncResult BeginExecuteReader( CommandBehavior behavior )
BeginExecuteReader method enables you to execute a query on a server without having current thread blocked. In other words, your program can continue execution while the query runs on SQL Server so you do not have to wait for it.
Refer to "Asynchronous Query Execution" article for detailed information.
To start running a query, you have to call BeginExecuteReader method, which in turn invokes appropriate actions in another thread. Return value of this method must be assigned to an System.IAsyncResult object. After executing this method, the program flow continues.
When you are ready to accept query results, call EndExecuteReader. If at the moment you call this function the query execution has not yet been finished, application stops and waits till the function returns. Then you can treat a DbDataReaderBase in a common way.
public void Async_Exec(DbConnectionBase myConnection) { DbCommandBase myCommand = (DbCommandBase)myConnection.CreateCommand(); myCommand.CommandText = "SELECT DeptNo, DName, Loc FROM Test.Dept"; Console.WriteLine("Starting asynchronous retrieval of data..."); myConnection.Open(); IAsyncResult cres = myCommand.BeginExecuteReader(CommandBehavior.Default); if (cres.IsCompleted) Console.WriteLine("Completed."); else Console.WriteLine("Have to wait for operation to complete..."); DbDataReader myReader = myCommand.EndExecuteReader(cres); try { while (myReader.Read()) { Console.WriteLine(myReader.GetInt32(0).ToString() + " " + myReader.GetString(1) + " " + myReader.GetString(2)); } } finally { myReader.Close(); myConnection.Close(); } }
Public Sub Async_Exec(ByVal myConnection As DbConnectionBase) Dim myCommand As DbCommandBase = myConnection.CreateCommand() myCommand.CommandText = "SELECT DeptNo, DName, Loc FROM Test.Dept" Console.WriteLine("Starting asynchronous retrieval of data...") myConnection.Open() Dim cres As IAsyncResult = myCommand.BeginExecuteReader(CommandBehavior.Default) If cres.IsCompleted Then Console.WriteLine("Completed.") Else Console.WriteLine("Have to wait for operation to complete...") End If Dim myReader As DbDataReader = myCommand.EndExecuteReader(cres) Try While myReader.Read() Console.WriteLine(String.Concat(myReader.GetInt32(0).ToString(), " ", myReader.GetString(1), " ", myReader.GetString(2))) End While Finally myReader.Close() myConnection.Close() End Try End Sub
Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2