using System;
using System.Threading;
using System.Threading.Tasks;
namespace Ch05_UsingCSharp5Dot0.R0502
{
///
///
///
public class AwaitExpresionLambda
{
///
/// Inicio ejecución de la demostración de expresión lambda con operador await.
///
public void Ejecutar()
{
Task tarea = ProcesamientoAsincronico();
tarea.Wait();
}
///
/// Procesamiento asincrónico usando una expresión lambda y el operador await.
///
///
private async static Task ProcesamientoAsincronico()
{
// Definición de expresión lambda con uso de operador await:
Func> lambdaAsync = async nombre =>
{
await Task.Delay(TimeSpan.FromSeconds(2));
return String.Format("`{0}` se está ejecutando en el ID de thread {1}. "
+ "¿Thread en el pool de threads?: {2}.",
nombre,
Thread.CurrentThread.ManagedThreadId,
Thread.CurrentThread.IsThreadPoolThread);
};
string resultado = await lambdaAsync("Expresión lambda asincrónica");
Console.WriteLine(resultado);
}
public static void Main()
{
new AwaitExpresionLambda().Ejecutar();
}
}
}