I ditt SqlCommand
du kan köra kommandon asynkront med BeginExecuteNonQuery
och EndExecuteNonQuery
. Den senare kommer att blockera tills den är klar. Detta kommer dock inte att rapportera framstegen från servern om hur säkerhetskopieringen går - jag skulle använda en markeringsram för det.
För att undvika EndExecuteNonQuery
från att blockera ditt användargränssnitt (beroende på hur du hanterar det), behöver du en bakgrundstråd. Om du använder detta kan du lika gärna inte använda BeginXXX
EndXXX
metoder och gör det synkront på en bakgrundstråd - BackgroundWorker
är bäst för detta.
För att undvika att använda en bakgrundstråd i användargränssnittet istället för att blockera EndXXX
du måste registrera en återuppringning och hantera den resulterande händelsen (ringer EndXXX
i den här händelsehanteraren, men den kommer tillbaka omedelbart).
Uppdatering: enligt en kommentar, för asynkrona anrop till SQL-kommandot/anslutningsgrejer, måste du ange så mycket i anslutningssträngen:
http://www.connectionstrings.com/sql-server-2008
Server=myServerAddress; Database=myDataBase; Integrated Security=True; Asynchronous Processing=True;
Eller i kod med anslutningssträngbyggaren:
builder.AsynchronousProcessing = true;