sql >> Database teknologi >  >> RDS >> Sqlserver

Asynkront kald af en SQL Server-lagret procedure i C#

I din SqlCommand du kan køre kommandoer asynkront ved hjælp af BeginExecuteNonQuery og EndExecuteNonQuery . Sidstnævnte vil blokere, indtil det er færdigt. Dette vil dog ikke rapportere fremskridtene fra serveren om, hvordan sikkerhedskopieringen forløber - jeg ville bruge en markeringsfremskridtslinje til det.

For at undgå EndExecuteNonQuery fra at blokere din brugergrænseflade (afhængigt af hvordan du håndterer den), skal du bruge en baggrundstråd. Hvis du bruger dette, kan du lige så godt lade være med at bruge BeginXXX EndXXX metoder og gør det synkront på en baggrundstråd - BackgroundWorker er bedst til dette.

For at undgå at bruge en baggrundstråd i brugergrænsefladen i stedet for at blokere på EndXXX du skal registrere et tilbagekald og håndtere den resulterende hændelse (kalder EndXXX). i denne hændelseshandler, men den vender tilbage med det samme).

Opdatering: som i en kommentar, for asynkrone opkald til SQL-kommando/forbindelsesting, skal du angive så meget i forbindelsesstrengen:

http://www.connectionstrings.com/sql-server-2008

Server=myServerAddress; Database=myDataBase; Integrated Security=True; Asynchronous Processing=True;

Eller i kode ved hjælp af forbindelsesstrengbyggeren:

builder.AsynchronousProcessing = true;


  1. Søgefiltrering med PHP/MySQL

  2. Konverter rå SQL-forespørgsel til Laravel Eloquent

  3. Liste alle indeksnavne, kolonnenavne og dets tabelnavn for en PostgreSQL-database

  4. SQL-forespørgsel for at finde den sidste dag i måneden