Met ADO.NET 2.0 is het mogelijk om queries asynchroon uit te laten voeren. Dit kan handig zijn op het moment dat u meerdere commando’s parallel wilt uitvoeren. U dient in de connection string ‘ASYNC=true’ op te nemen, en vervolgens kunt u met onderstaande code parallel statements uit laten voeren.
Met het ‘BeginExecuteReader’ statement wordt de query gestart, en met EndExecuteReader geeft u aan dat op die plek in de code gewacht moet worden totdat de query klaar is.
Voorbeeld:
IAsyncResult ar = command.BeginExecuteReader();
// ...
// do other processing
// ...
SqlDataReader r = command.EndExecuteReader(ar);
// use the reader and then close the reader and the connection
Wilt u twee queries parallel laten draaien, dan kan dit met onderstaand voorbeeld.
command1.BeginExecuteReader();
command2.BeginExecuteReader();
// ...
// do other processing
// ...
SqlDataReader r1 = command1.EndExecuteReader(ar);
SqlDataReader r2 = command2.EndExecuteReader(ar);
// use the reader and then close the reader and the connection
Er zijn diverse bronnen, waaronder MSDN, die waarschuwen om dit soort code niet vanuit WinForms uit te voeren. Dit heeft te maken met het feit dat deze functionaliteit niet thread-safe is, in combinatie met het feit dat WinForm controls (o.a. Form) alleen te benaderen zijn vanuit de thread waarin ze zijn gecreeerd. Wilt u een applicatie die vanuit de GUI asynchroon werkt, gebruik dan de WinForm 2.0 BackgroundWorker class.