Freigeben über


Asynchrone Vorgänge

Einige Datenbankvorgänge, z. B. Befehlsausführungen, können beträchtliche Zeit in Anspruch nehmen. In derartigen Fällen müssen Singlethread-Anwendungen andere Vorgänge blockieren und warten, bis der Befehl abgeschlossen ist, ehe ihre eigenen Vorgänge fortgesetzt werden können. Wenn der Vorgang mit langer Ausführungszeit einem Hintergrundthread zugewiesen werden kann, ermöglicht dies im Gegensatz dazu, dass der Vordergrundthread während des gesamten Vorgangs aktiv bleibt. In einer Windows-Anwendung beispielsweise ermöglicht das Delegieren des Vorgangs mit langer Ausführungszeit an einen Hintergrundthread, dass der Benutzeroberflächenthread während der Ausführung des Vorgangs reaktionsfähig bleibt.

.NET Framework stellt mehrere standardbasierte asynchrone Entwurfsmuster bereit, mit denen Entwickler Hintergrundthreads nutzen und die Benutzeroberfläche oder Threads mit hoher Priorität freigeben können, um andere Vorgänge auszuführen. ADO.NET unterstützt dieselben Entwurfsmuster in der SqlCommand Klasse. Insbesondere die Methoden BeginExecuteNonQuery, BeginExecuteReader und BeginExecuteXmlReader gepaart mit den Methoden EndExecuteNonQuery, EndExecuteReader und EndExecuteXmlReader bieten die asynchrone Unterstützung.

Hinweis

Die asynchrone Programmierung ist ein Kernmerkmal des .NET Framework, das ADO.NET voll ausnutzt, um die Standardentwurfsmuster zu nutzen. Weitere Informationen zu den verschiedenen asynchronen Techniken, die Entwicklern zur Verfügung stehen, finden Sie unter Asynchrones Aufrufen von synchronen Methoden.

Obwohl die Verwendung asynchroner Techniken mit ADO.NET Features keine besonderen Überlegungen enthält, ist es wahrscheinlich, dass mehr Entwickler asynchrone Features in ADO.NET als in anderen Bereichen von .NET Framework verwenden. Es ist wichtig, die Vorteile und Fallstricke beim Erstellen von Multithread-Anwendungen zu beachten. Die folgenden Beispiele in diesem Abschnitt weisen auf mehrere wichtige Punkte hin, die Entwickler bei der Erstellung von Anwendungen mit Multithread-Funktionalität berücksichtigen müssen.

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