Muster für die asynchrone ProgrammierungAsynchronous Programming Patterns

Das.NET Framework bietet drei Muster für das Durchführen asynchroner Vorgänge:The .NET Framework provides three patterns for performing asynchronous operations:

  • APM-Muster (Asynchronous Programming Model, auch IAsyncResult-Muster genannt), in dem asynchrone Vorgänge Begin- und End-Methoden erfordern (z. B. BeginWrite und EndWrite für asynchrone Schreibvorgänge).Asynchronous Programming Model (APM) pattern (also called the IAsyncResult pattern), where asynchronous operations require Begin and End methods (for example, BeginWrite and EndWrite for asynchronous write operations). Dieses Muster ist für neue Entwicklungen nicht mehr empfehlenswert.This pattern is no longer recommended for new development. Weitere Informationen finden Sie unter Asynchronous Programming Model (APM) (Asynchrones Programmiermodell (APM)).For more information, see Asynchronous Programming Model (APM).

  • Das ereignisbasierte asynchrone Muster (EAP), das eine Methode mit einem Async-Suffix und ein oder mehrere Ereignisse, Ereignishandler-Delegattypen und von EventArg abgeleitete Typen erfordert.Event-based Asynchronous Pattern (EAP), which requires a method that has the Async suffix, and also requires one or more events, event handler delegate types, and EventArg-derived types. EAP wurde in .NET Framework 2.0 eingeführt.EAP was introduced in the .NET Framework 2.0. Es für neue Entwicklungen nicht mehr empfehlenswert.It is no longer recommended for new development. Weitere Informationen finden Sie unter Ereignisbasiertes asynchrones Muster (EAP).For more information, see Event-based Asynchronous Pattern (EAP).

  • Aufgabenbasierte asynchrone Muster (Task-based Asynchronous Pattern, TAP) verwendet eine einzelne Methode, um die Initiierung und den Abschluss eines asynchronen Vorgangs darzustellen.Task-based Asynchronous Pattern (TAP), which uses a single method to represent the initiation and completion of an asynchronous operation. TAP wurde in .NET Framework 4 eingeführt und ist die empfohlene Vorgehensweise für die asynchrone Programmierung im .NET Framework.TAP was introduced in the .NET Framework 4 and is the recommended approach to asynchronous programming in the .NET Framework. Die Schlüsselwörter async und await in C# und die Operatoren Async und Await in Visual Basic Language fügen Sprachunterstützung für TAP hinzu.The async and await keywords in C# and the Async and Await operators in Visual Basic Language add language support for TAP. Weitere Informationen finden Sie unter Task-based Asynchronous Pattern (TAP) (Aufgabenbasiertes asynchrones Muster (TAP)).For more information, see Task-based Asynchronous Pattern (TAP).

Vergleichen von MusternComparing Patterns

Für einen schnellen Vergleich dazu, wie die drei Muster asynchrone Vorgänge modellieren, sollten Sie eine Read-Methode verwenden, die eine angegebene Datenmenge in einen bereitgestellten Puffer beginnend an einem angegebenen Offset liest:For a quick comparison of how the three patterns model asynchronous operations, consider a Read method that reads a specified amount of data into a provided buffer starting at a specified offset:

public class MyClass  
{  
    public int Read(byte [] buffer, int offset, int count);  
}  

Das APM-Gegenstück dieser Methode würde die Methoden BeginRead und EndRead verfügbar machen:The APM counterpart of this method would expose the BeginRead and EndRead methods:

public class MyClass  
{  
    public IAsyncResult BeginRead(  
        byte [] buffer, int offset, int count,   
        AsyncCallback callback, object state);  
    public int EndRead(IAsyncResult asyncResult);  
}  

Das EAP-Gegenstück würde den folgenden Satz von Typen und Membern verfügbar machen:The EAP counterpart would expose the following set of types and members:

public class MyClass  
{  
    public void ReadAsync(byte [] buffer, int offset, int count);  
    public event ReadCompletedEventHandler ReadCompleted;  
}  

Das TAP-Gegenstück würde die folgende einzelne ReadAsync-Methode verfügbar machen:The TAP counterpart would expose the following single ReadAsync method:

public class MyClass  
{  
    public Task<int> ReadAsync(byte [] buffer, int offset, int count);  
}  

Eine umfassende Erörterung von TAP, APM und EAP finden Sie unter den Links im nächsten Abschnitt.For a comprehensive discussion of TAP, APM, and EAP, see the links provided in the next section.

TitelTitle descriptionDescription
Asynchronous Programming Model (APM) (Asynchrones Programmiermodell (APM))Asynchronous Programming Model (APM) Beschreibt das Legacymodell, das die IAsyncResult-Schnittstelle verwendet, um asynchrones Verhalten bereitzustellen.Describes the legacy model that uses the IAsyncResult interface to provide asynchronous behavior. Dieses Modell ist für neue Entwicklungen nicht mehr empfehlenswert.This model is no longer recommended for new development.
Ereignisbasiertes asynchrones Muster (EAP)Event-based Asynchronous Pattern (EAP) Beschreibt das ereignisbasierte Legacymodell für die Bereitstellung des asynchronen Verhaltens.Describes the event-based legacy model for providing asynchronous behavior. Dieses Modell ist für neue Entwicklungen nicht mehr empfehlenswert.This model is no longer recommended for new development.
Task-based Asynchronous Pattern (TAP) (Aufgabenbasiertes asynchrones Muster)Task-based Asynchronous Pattern (TAP) Beschreibt das neue asynchrone Muster basierend auf dem System.Threading.Tasks-Namespace.Describes the new asynchronous pattern based on the System.Threading.Tasks namespace. Dieses Modell ist der empfohlene Ansatz für die asynchrone Programmierung in .NET Framework 4 und höheren Versionen.This model is the recommended approach to asynchronous programming in the .NET Framework 4 and later versions.

Siehe auchSee also

Asynchrone Programmierung in C# Asynchronous programming in C#
Asynchrone Programmierung in F# Async Programming in F#
Asynchrone Programmierung mit „Async“ und „Await“ (Visual Basic)Asynchronous Programming with Async and Await (Visual Basic)