Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
.NET proporciona tres patrones para realizar operaciones asincrónicas:
Patrón asincrónico basado en tareas (TAP), que usa un único método para representar el inicio y la finalización de una operación asincrónica. TAP se introdujo en .NET Framework 4. Es el enfoque recomendado para la programación asincrónica en .NET. 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 Patrón asincrónico basado en tareas (TAP).
Patrón asincrónico basado en eventos (EAP), que es el modelo heredado basado en eventos para proporcionar un comportamiento asincrónico. Requiere un método que tenga el sufijo
Async
y uno o varios eventos, tipos de delegados del controlador de eventos y tipos derivados deEventArg
. EAP se introdujo en .NET Framework 2.0. Ya no está recomendado para nuevos proyectos. Para obtener más información, consulte Patrón asincrónico basado en eventos (EAP).Modelo de programación asincrónica (APM) (también denominado IAsyncResult patrón), que es el modelo heredado que usa la IAsyncResult interfaz para proporcionar un comportamiento asincrónico. En este patrón, las operaciones asincrónicas requieren
Begin
yEnd
métodos (por ejemplo,BeginWrite
eEndWrite
implementar una operación de escritura asincrónica). Este patrón ya no se recomienda para el nuevo desarrollo. Para obtener más información, vea Modelo de programación asincrónica (APM).
Comparación de patrones
**
Para obtener una comparación rápida de cómo los tres patrones modelan las operaciones asincrónicas, considere un método Read
que lee una cantidad de datos especificada en un búfer proporcionado, comenzando a partir de un desplazamiento especificado.
public class MyClass
{
public int Read(byte [] buffer, int offset, int count);
}
El homólogo TAP de este método expondría el siguiente método único ReadAsync
:
public class MyClass
{
public Task<int> ReadAsync(byte [] buffer, int offset, int count);
}
El homólogo de 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 homólogo de APM 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);
}