Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
.NET stellt drei Muster zum Ausführen asynchroner Vorgänge bereit:
Aufgabenbasiertes asynchrones Muster (TAP), das eine einzelne Methode verwendet, um die Initiierung und Fertigstellung eines asynchronen Vorgangs darzustellen. TAP wurde in .NET Framework 4 eingeführt. Es ist der empfohlene Ansatz für die asynchrone Programmierung in .NET. Die Schlüsselwörter async und await in C# und die Operatoren Async und Await in Visual Basic fügen Sprachunterstützung für TAP hinzu. Weitere Informationen finden Sie unter Aufgabenbasiertes asynchrones Muster (TAP).For more information, see Task-based Asynchronous Pattern (TAP).
Ereignisbasiertes asynchrones Muster (EAP), das das ereignisbasierte Legacymodell für die Bereitstellung asynchroner Verhaltensweisen ist. Sie erfordert eine Methode mit dem
Async
Suffix und einem oder mehreren Ereignissen, Ereignishandler-Delegattypen und vonEventArg
abgeleiteten Typen. EAP wurde in .NET Framework 2.0 eingeführt. Es wird nicht mehr für Neuentwicklungen empfohlen. Weitere Informationen finden Sie unter ereignisbasiertes asynchrones Muster (EAP).APM-Muster (asynchrones Programmiermodell) ( auch als Muster bezeichnet IAsyncResult ) ist das Legacymodell, das die IAsyncResult Schnittstelle verwendet, um asynchrones Verhalten bereitzustellen. In diesem Muster erfordern asynchrone Vorgänge die Methoden
Begin
undEnd
(z. B.BeginWrite
undEndWrite
, um einen asynchronen Schreibvorgang zu implementieren). Dieses Muster wird für die neue Entwicklung nicht mehr empfohlen. Weitere Informationen finden Sie unter Asynchronous Programming Model (APM).
Vergleich von Mustern
Für einen schnellen Vergleich, wie die drei Muster asynchrone Vorgänge modellieren, ziehen Sie eine Read
Methode in Betracht, die eine bestimmte Datenmenge in einen bereitgestellten Puffer einliest, beginnend bei einem angegebenen Offset:
public class MyClass
{
public int Read(byte [] buffer, int offset, int count);
}
Das TAP-Gegenstück dieser Methode würde die folgende einzelne ReadAsync
Methode verfügbar machen:
public class MyClass
{
public Task<int> ReadAsync(byte [] buffer, int offset, int count);
}
Das EAP-Gegenstück würde den folgenden Satz von Typen und Membern verfügbar machen:
public class MyClass
{
public void ReadAsync(byte [] buffer, int offset, int count);
public event ReadCompletedEventHandler ReadCompleted;
}
Das APM-Gegenstück würde die BeginRead
- und EndRead
-Methoden verfügbar machen.
public class MyClass
{
public IAsyncResult BeginRead(
byte [] buffer, int offset, int count,
AsyncCallback callback, object state);
public int EndRead(IAsyncResult asyncResult);
}