Wzorce programowania asynchronicznegoAsynchronous programming patterns

Platforma .NET udostępnia trzy wzorce do wykonywania operacji asynchronicznych:.NET provides three patterns for performing asynchronous operations:

  • Wzorzec asynchroniczny oparty na zadaniach (TAP) , który używa pojedynczej metody do reprezentowania inicjacji i ukończenia operacji asynchronicznej.Task-based Asynchronous Pattern (TAP), which uses a single method to represent the initiation and completion of an asynchronous operation. Naciśnij przycisk został wprowadzony w .NET Framework 4.TAP was introduced in the .NET Framework 4. Jest to zalecane podejście do programowania asynchronicznego w programie .NET.It's the recommended approach to asynchronous programming in .NET. Słowa kluczowe Async i await w C# programie oraz operatory Async i await w Visual Basic Dodaj obsługę języka dla TAP.The async and await keywords in C# and the Async and Await operators in Visual Basic add language support for TAP. Aby uzyskać więcej informacji, zobacz wzorzec asynchroniczny oparty na zadaniach (TAP).For more information, see Task-based Asynchronous Pattern (TAP).

  • Wzorzec asynchroniczny oparty na zdarzeniach (EAP) , który jest oparty na zdarzeniach starszym modelu do zapewniania zachowania asynchronicznego.Event-based Asynchronous Pattern (EAP), which is the event-based legacy model for providing asynchronous behavior. Wymaga metody, która ma Async sufiks i co najmniej jedno zdarzenie, typy delegatów obsługi zdarzeń i typy pochodne EventArg.It requires a method that has the Async suffix and one or more events, event handler delegate types, and EventArg-derived types. Protokół EAP został wprowadzony w .NET Framework 2,0.EAP was introduced in the .NET Framework 2.0. Nie jest już zalecane w przypadku nowych rozwiązań programistycznych.It's no longer recommended for new development. Aby uzyskać więcej informacji, zobacz asynchroniczny wzorzec oparty na zdarzeniach (EAP).For more information, see Event-based Asynchronous Pattern (EAP).

  • Wzorzec modelu programowania asynchronicznego (APM) (nazywany również wzorcem IAsyncResult), który jest starszym modelem, który używa interfejsu IAsyncResult, aby zapewnić asynchroniczne zachowanie.Asynchronous Programming Model (APM) pattern (also called the IAsyncResult pattern), which is the legacy model that uses the IAsyncResult interface to provide asynchronous behavior. W tym wzorcu operacje synchroniczne wymagają Begin i End metod (na przykład BeginWrite i EndWrite do implementowania asynchronicznej operacji zapisu).In this pattern, synchronous operations require Begin and End methods (for example, BeginWrite and EndWrite to implement an asynchronous write operation). Ten wzorzec nie jest już zalecany w przypadku nowych rozwiązań programistycznych.This pattern is no longer recommended for new development. Aby uzyskać więcej informacji, zobacz asynchroniczny model programowania (APM).For more information, see Asynchronous Programming Model (APM).

Porównanie wzorcówComparison of patterns

Aby szybko porównać sposób wykonywania operacji asynchronicznych przez trzy modele wzorców, należy rozważyć metodę Read, która odczytuje określoną ilość danych do podanego buforu, rozpoczynając od określonego przesunięcia: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);  
}  

Odpowiedniki TAP dla tej metody uwidaczniają następujące pojedyncze metody ReadAsync:The TAP counterpart of this method would expose the following single ReadAsync method:

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

Odpowiedniki protokołu EAP uwidaczniają następujący zestaw typów i członków: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;  
}  

Odpowiednika APM uwidacznia BeginRead i EndRead metody:The APM counterpart 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);  
}  

Zobacz takżeSee also