In uw SqlCommand
u kunt opdrachten asynchroon uitvoeren met BeginExecuteNonQuery
en EndExecuteNonQuery
. De laatste blokkeert totdat het klaar is. Dit rapporteert echter niet de voortgang van de server over hoe de back-up verloopt - ik zou er een selectiekadervoortgangsbalk voor gebruiken.
Om de EndExecuteNonQuery
. te vermijden van het blokkeren van uw gebruikersinterface (afhankelijk van hoe u ermee omgaat), heeft u een achtergrondthread nodig. Als je dit gebruikt, kun je BeginXXX
net zo goed niet gebruiken EndXXX
methoden en doe het synchroon op een achtergrondthread - de BackgroundWorker
is hiervoor het beste.
Om het gebruik van een achtergrondthread in de gebruikersinterface te vermijden, in plaats van te blokkeren op EndXXX
u moet een terugbelverzoek registreren en de resulterende gebeurtenis afhandelen (bel EndXXX
in deze gebeurtenis-handler, maar het zal onmiddellijk terugkeren).
Bijwerken: volgens een opmerking, voor asynchrone oproepen naar de SQL-opdracht / verbindingsdingen, moet u zoveel opgeven in de verbindingsreeks:
http://www.connectionstrings.com/sql-server-2008
Server=myServerAddress; Database=myDataBase; Integrated Security=True; Asynchronous Processing=True;
Of in code met behulp van de verbindingsreeksbouwer:
builder.AsynchronousProcessing = true;