Entwurfsmuster für die asynchrone Programmierung

Mit asynchronen Vorgängen werden üblicherweise Aufgaben ausgeführt, die längere Zeit in Anspruch nehmen, z. B. das Öffnen großer Dateien, Die Herstellung einer Verbindung mit Remotecomputern oder das Abfragen einer Datenbank. Ein asynchroner Vorgang wird in einem eigenen Thread ausgeführt, der vom Hauptanwendungsthread getrennt ist. Wenn eine Anwendung Methoden zum Ausführen eines asynchronen Vorgangs aufruft, kann die Anwendung weiter ausgeführt werden, während die asynchrone Methode ihre Aufgaben erfüllt.

In .NET Framework stehen zwei Entwurfsmuster für asynchrone Vorgänge zur Verfügung:

  • Asynchrone Vorgänge, die IAsyncResult-Objekte verwenden.

  • Asynchrone Vorgänge, die Ereignisse verwenden.

Das IAsyncResult-Entwurfsmuster ermöglicht eine Reihe unterschiedlicher Programmiermodelle, ist jedoch komplex und daher schwer zu erlernen und bietet zudem eine Flexibilität, die für die meisten Anwendungen nicht erforderlich ist. Klassenbibliothek-Designer sollten asynchrone Methoden daher nach Möglichkeit nach dem ereignisgesteuerten Modell implementieren. In einigen Fällen empfiehlt sich für Bibliothek-Designer jedoch auch das IAsyncResult-basierte Modell.

Eine Dokumentation zu asynchronen Vorgängen, die Ereignisse verwenden, finden Sie unter Übersicht über ereignisbasierte asynchrone Muster.

Die asynchrone Programmierung ist ein Feature, das von vielen Bereichen in .NET Framework unterstützt wird, z. B.:

  • Datei-E/A, Stream-E/A, Socket-E/A

  • Netzwerkvorgänge

  • Remotechannel (HTTP, TCP) und Proxys

  • Mithilfe von ASP.NET erstellte XML-Webdienste

  • ASP.NET-Web Forms

  • Message Queuing mithilfe der MessageQueue

In diesem Abschnitt

Siehe auch

Referenz

AsyncCallback
IAsyncResult
Delegate
AsyncOperationManager
BackgroundWorker

Konzepte

Asynchrone Datei-E/A