Freigeben über


Entwurfsmuster für die asynchrone Programmierung

Aktualisiert: November 2007

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

Konzepte

Asynchrone Datei-E/A

Referenz

AsyncCallback

IAsyncResult

Delegate

AsyncOperationManager

BackgroundWorker