sql >> Database >  >> RDS >> Sqlserver

Asynchrone aanroep van een SQL Server-opgeslagen procedure in C#

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;


  1. Databaseschema voor berichten naar meerdere gebruikers

  2. PHP 5.5.0 met Microsoft SQL Server 2008 R2 - Geen sqlsrv_connect()?

  3. PHP-formulieren die geen gegevens invoegen in MySQL

  4. oracle dynamic sql evalueert expressie in where-clausule