- Featured post
C# Async ops
El nucleo de la programacion asincrona son los objetos Task
y Task<T>
. Son compatibles con las palabras clave async
y await
.
Primero hay que reconocer si el codigo se usa para trabajos enlazados a I/O o si son CPU intensivos.
- Si el codigo espera algo como una BBDD o una response de un servidor, es codigo I/O. En este caso hay que usar
async
yawait
- Si el codigo realiza un calculo costoso, es CPU intensivo. Use
await
para esperar una operacion que se ha comenzado en background conTask.run
Async / Await (Operaciones I/O)
La palabra clave importante aqui es await
. Lo que hace es suspender la ejecucion del metodo actual y devolver el control hasta que está lista para seguir.
public async Task Main()
{
string contenido = await LeerPaginaWebAsync("http://example.com");
}
private async Task<string> LeerPaginaWebAsync(string url)
{
using (HttpClient client = new HttpClient())
{
return await client.GetStringAsync(url);
}
}