Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés

Asynchronous Programming Patterns

.NET Framework (current version)
 

.NET Framework proporciona tres patrones para realizar las operaciones asincrónicas:

  • El patrón de programación asincrónica (APM) (también llamado patrón IAsyncResult), en el que las operaciones asincrónicas requieren los métodos Begin y End (por ejemplo, BeginWrite y EndWrite para las operaciones asincrónicas de escritura).  Este patrón ya no se recomienda para nuevo desarrollo.  Para obtener más información, vea Asynchronous Programming Model (APM).  

  • El patrón asincrónico basado en eventos (EAP), que requiere un método que tiene el sufijo Async y también uno o más eventos, tipos de delegado de controlador de eventos y tipos derivados de EventArg.  EAP apareció por primera vez en .NET Framework 2.0.  Ya no se recomienda para nuevo desarrollo.  Para obtener más información, vea Event-based Asynchronous Pattern (EAP).  

  • El patrón asincrónico basado en tareas (TAP), que utiliza un método único para representar el inicio y la finalización de una operación asincrónica.  TAP se introdujo en .NET Framework 4 y es el método recomendado para programación asincrónica en .NET Framework.  Las palabras clave async y await en C# y los operadores Async y Await en Visual Basic agregan compatibilidad de lenguaje para TAP.  Para obtener más información, vea Task-based Asynchronous Pattern (TAP).  

Para una comparación rápida de cómo los tres patrones modelan las operaciones asincrónicas, considere un método Read que lea una determinada cantidad de datos en un búfer proporcionado comenzando en un desplazamiento especificado:

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

El equivalente de APM para este método expondría los métodos BeginRead y EndRead:

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

El equivalente EAP expondría el siguiente conjunto de tipos y miembros:

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

El equivalente TAP expondría el siguiente método ReadAsync único:

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

Para obtener información completa sobre TAP, APM y EAP, consulte los vínculos de la sección siguiente.

Título

Descripción

Asynchronous Programming Model (APM)

Describe el patrón heredado que utiliza la interfaz IAsyncResult para proporcionar un comportamiento asincrónico.  Este patrón ya no se recomienda para nuevo desarrollo.  

Event-based Asynchronous Pattern (EAP)

Describe el patrón heredado basado en eventos para proporcionar el comportamiento asincrónico.  Este patrón ya no se recomienda para nuevo desarrollo.  

Task-based Asynchronous Pattern (TAP)

Describe el nuevo patrón asincrónico basado en el espacio de nombres System.Threading.Tasks.  Este patrón es el método recomendado para la programación asincrónica en .NET Framework 4 y versiones posteriores.  

Mostrar: