Asynchrone VorgängeAsynchronous Operations

Einige Datenbankoperationen wie das Ausführen von Befehlen können einige Zeit bis zur Beendigung in Anspruch nehmen.Some database operations, such as command executions, can take significant time to complete. In diesem Fall müssen Singlethread-Anwendungen andere Operationen blockieren und auf die Beendigung des Befehls warten, bevor sie mit eigenen Operationen fortfahren können.In such a case, single-threaded applications must block other operations and wait for the command to finish before they can continue their own operations. Es ist jedoch auch möglich, dass der Vordergrundthread während der Operation aktiv bleibt, wenn der länger dauernde Vorgang einem Hintergrundthread zugewiesen werden kann.In contrast, being able to assign the long-running operation to a background thread allows the foreground thread to remain active throughout the operation. In einer Windows-Anwendung bleibt beispielsweise der Benutzeroberflächenthread beim Ausführen des Vorgangs reaktionsfähig, wenn die länger dauernde Operation an einen Hintergrundthread delegiert wird.In a Windows application, for example, delegating the long-running operation to a background thread allows the user interface thread to remain responsive while the operation is executing.

.NET Framework stellt mehrere asynchrone Standardentwurfsmuster bereit, mit denen Entwickler die Vorteile der Hintergrundthreads nutzen können und die dem Benutzeroberflächenthread oder Threads mit hoher Priorität die Möglichkeit geben, andere Operationen zu beenden.The .NET Framework provides several standard asynchronous design patterns that developers can use to take advantage of background threads and free the user interface or high-priority threads to complete other operations. ADO.NET unterstützt dieselben Entwurfsmuster in seiner SqlCommand-Klasse.ADO.NET supports these same design patterns in its SqlCommand class. Insbesondere die Methoden BeginExecuteNonQuery, BeginExecuteReader und BeginExecuteXmlReader stellen zusammen mit den Methoden EndExecuteNonQuery, EndExecuteReader und EndExecuteXmlReader die asynchrone Unterstützung bereit.Specifically, the BeginExecuteNonQuery, BeginExecuteReader, and BeginExecuteXmlReader methods, paired with the EndExecuteNonQuery, EndExecuteReader, and EndExecuteXmlReader methods, provide the asynchronous support.

Hinweis

Asynchrone Programmierung ist eine grundlegende Funktion von .NET Framework, und ADO.NET nutzt die Möglichkeiten der Standardentwurfsmuster vollständig.Asynchronous programming is a core feature of the .NET Framework, and ADO.NET takes full advantage of the standard design patterns. Weitere Informationen zu den verschiedenen asynchronen Techniken, die Entwicklern zur Verfügung stehen, finden Sie unter Asynchrones Aufrufen synchroner Methoden.For more information about the different asynchronous techniques available to developers, see Calling Synchronous Methods Asynchronously.

Auch wenn durch die Verwendung asynchroner Techniken mit ADO.NET-Funktionen keine neuen Aspekte hinzugefügt werden, ist es wahrscheinlicher, dass Entwickler asynchrone Funktionen in ADO.NET verwenden als in anderen Bereichen von .NET Framework.Although using asynchronous techniques with ADO.NET features does not add any special considerations, it is likely that more developers will use asynchronous features in ADO.NET than in other areas of the .NET Framework. Es ist wichtig, mit den Vorteilen und potenziellen Fehlerquellen beim Erstellen von Multithread-Anwendungen vertraut zu sein.It is important to be aware of the benefits and pitfalls of creating multithreaded applications. Die in diesem Abschnitt folgenden Beispiele verdeutlichen mehrere wichtige Aspekte, die Entwickler beim Erstellen von Anwendungen mit Multithreadfunktionalität berücksichtigen sollten.The examples that follow in this section point out several important issues that developers will need to take into account when building applications that incorporate multithreaded functionality.

In diesem AbschnittIn This Section

Verwenden von Rückrufen in Windows-AnwendungenWindows Applications Using Callbacks
Enthält ein Beispiel, das die sichere Ausführung eines asynchronen Befehls veranschaulicht. Dabei wird die Interaktion mit einem Formular und seinem Inhalt von einem anderen Thread aus ordnungsgemäß behandelt.Provides an example demonstrating how to execute an asynchronous command safely, correctly handling interaction with a form and its contents from a separate thread.

ASP.NET-Anwendungen mit Wait-HandlesASP.NET Applications Using Wait Handles
Enthält ein Beispiel, das die gleichzeitige Ausführung mehrerer Befehle von einer ASP.NET-Seite aus veranschaulicht. Dabei werden Wait-Handles zum Verwalten der Operation bei Beendigung aller Befehle verwendet.Provides an example demonstrating how to execute multiple concurrent commands from an ASP.NET page, using Wait handles to manage the operation at completion of all the commands.

Abrufen in KonsolenanwendungenPolling in Console Applications
Enthält ein Beispiel, das die Verwendung von Abfragen veranschaulicht, mit denen von einer Konsolenanwendung auf die Beendigung der Ausführung eines asynchronen Befehls gewartet wird.Provides an example demonstrating the use of polling to wait for the completion of an asynchronous command execution from a console application. Diese Technik kann auch in einer Klassenbibliothek oder anderen Anwendungen ohne Benutzeroberfläche verwendet werden.This technique is also valid in a class library or other application without a user interface.

Siehe auchSee also