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:
https://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;