Apéndice B. Reconocer e interpretar patrones asíncronos
Las ventajas del código asíncrono en se conocen desde hace décadas, antes de que se inventara .NET. En los primeros días de .NET, se desarrollaron varios estilos diferentes de código asíncrono, utilizados aquí y allá, y finalmente descartados. No todas eran malas ideas; muchas de ellas allanaron el camino para el enfoque moderno async
/await
. Sin embargo, hay mucho código heredado que utiliza patrones asíncronos antiguos. Este apéndice tratará los patrones más comunes, explicando cómo funcionan y cómo integrarlos en el código moderno.
A veces, la misma clase se actualiza a lo largo de los años, adquiriendo más y más miembros a medida que admite múltiples patrones asíncronos. Quizá el mejor ejemplo de esto sea la clase Socket
. Éstos son algunos de los miembros de la clase Socket
para el funcionamiento del núcleo Send
:
class
Socket
{
// Synchronous
public
int
Send
(
byte
[]
buffer
,
int
offset
,
int
size
,
SocketFlags
flags
);
// APM
public
IAsyncResult
BeginSend
(
byte
[]
buffer
,
int
offset
,
int
size
,
SocketFlags
flags
,
AsyncCallback
callback
,
object
state
);
public
int
EndSend
(
IAsyncResult
result
);
// Custom, very close to APM
public
IAsyncResult
BeginSend
(
byte
[]
buffer
,
int
offset
,
int
size
,
SocketFlags
flags
,
out
SocketError
error
,
AsyncCallback
callback
,
object
state
);
public
int
EndSend
(
IAsyncResult
result
,
out
SocketError
error
);
// Custom
public
bool
SendAsync
(
SocketAsyncEventArgs
e
);
// TAP (as an extension method)
public
Task ...
Get Libro de cocina de la concurrencia en C#, 2ª edición now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.