Asynchrone Vorgänge

Datenbankvorgänge können erhebliche Zeit in Anspruch nehmen. Um die Reaktionsfähigkeit der Benutzeroberfläche zu erhalten oder das Blockieren eines Anforderungsthreads zu vermeiden, verwenden Sie asynchrone Datenbankmethoden, anstatt synchron auf den Abschluss eines Befehls zu warten.

Installieren Sie das Microsoft.Data.SqlClient-NuGet-Paket für SQL-Clientcode. Für neue Anwendungen verwenden Sie OpenAsync und die ExecuteNonQueryAsync, ExecuteReaderAsync und ExecuteXmlReaderAsync Methoden mit await. Diese Methoden führen asynchrone Eingabe/Ausgabe (E/A) aus, ohne dass Sie einen Hintergrundthread erstellen müssen.

Microsoft. Data.SqlClient unterstützt auch die in diesem Abschnitt beschriebenen Rückruf-, Wait-Handle- und Abrufmuster. Die Methoden BeginExecuteNonQuery, BeginExecuteReader und BeginExecuteXmlReader bilden Paare mit EndExecuteNonQuery, EndExecuteReader und EndExecuteXmlReader. Fügen Sie Asynchronous Processing=true nicht der Verbindungszeichenfolge hinzu; Microsoft.Data.SqlClient unterstützt dieses Schlüsselwort nicht.

Hinweis

Verwenden Sie bei neuen Codes Aufgabenbasierte asynchrone Muster (TAP). Die Beispiele in diesem Abschnitt zeigen das unterstützte Begin/End Muster für Anwendungen, die Callbacks, Wartehandles oder Polling benötigen.

Halten Sie jede Verbindung und jeden Befehl aktiv, bis der Vorgang abgeschlossen ist. Fangen Sie Ausnahmen ab, wenn Sie die übereinstimmende End-Methode aufrufen oder auf die Aufgabe warten. Aktualisieren Sie in einer Desktopanwendung Steuerelemente nur über den Benutzeroberflächenthread.

In diesem Abschnitt

Windows-Anwendungen mit Rückrufen Stellt ein Beispiel bereit, in dem veranschaulicht wird, wie ein asynchroner Befehl sicher ausgeführt wird und die Interaktion mit einem Formular und dessen Inhalt aus einem separaten Thread ordnungsgemäß behandelt wird.

ASP.NET Anwendungen mit Wait Handles Stellt ein Beispiel bereit, in dem veranschaulicht wird, wie mehrere gleichzeitige Befehle von einer ASP.NET-Seite ausgeführt werden. Verwenden Sie die Wait-Handles, um den Vorgang nach Abschluss aller Befehle zu verwalten.

Abfragen in Konsolenanwendungen Stellt ein Beispiel bereit, das die Verwendung von Abrufen veranschaulicht, um auf den Abschluss einer asynchronen Befehlsausführung aus einer Konsolenanwendung zu warten. Diese Technik eignet sich auch in einer Klassenbibliothek oder einer anderen Anwendung ohne Benutzerschnittstelle.

Siehe auch