QA: Hur avbryter jag ett asynkront anrop till databasen via ADO.NET 2.0?

Fråga: Hur avbryter jag ett asynkront anrop till databasen? ADO:NET 2.0 har ju direkt stöd för asynkrona anrop men vill jag avbryta ett anrop av någon anledning så går inte det verkar det som.

Svar: Denna är en liten luring då man initialt tror att det är själva "handle:n" som man får vi skapande av ett asynkront anrop mot databasen som man ska nyttja för att åstadkomma detta men så är inte fallet. Istället så har "Command"-objektet en metod som heter "Cancel" vilken man anropar för att avbryta den asynkrona exekveringen.

// Skapa asynkront anrop till databas
IAsyncResult handle = oCmd.BeginExecuteReader();

// Fel typ av kod för att avbryta exekvering
if(some condition){
   handle.Cancel();
}

// Rätt typ av kod för att avbryta exekvering
if(some condition){
   oCmd.Cancel();
}