Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Created June 20, 2014 22:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Fhernd/b47b07e3c1757e55bb1c to your computer and use it in GitHub Desktop.
Save Fhernd/b47b07e3c1757e55bb1c to your computer and use it in GitHub Desktop.
Demostración del uso de métodos asincrónicos con excepciones.
using System;
using System.Threading.Tasks;
namespace Articulos.Cap04
{
public sealed class MetodoAsincronicoExcepciones
{
public static async void MetodoAsincronico()
{
Task<string> tarea = RetrasoAsincronico();
try
{
string resultado = await tarea;
Console.WriteLine ("Resultado: {0}", resultado);
}
catch (Exception e)
{
Console.WriteLine ("Mensaje de excepción: {0}", e.Message);
}
Console.WriteLine ("¿La tarea fue cancelada?: {0}", tarea.IsCanceled.ToString());
Console.WriteLine ("¿La tarea falló?: {0}", tarea.IsFaulted.ToString());
if (tarea.Exception != null)
{
Console.WriteLine ("Mensaje de excepción: {0}", tarea.Exception.Message);
Console.WriteLine ("Mensaje de excepción anidada: {0}", tarea.Exception.InnerException.Message);
}
}
public static async Task<string> RetrasoAsincronico()
{
await Task.Delay(100);
// Remueva los comentarios para demostrar
// el lanzamiento de excepciones en métodos
// asincrónicos:
// throw new OperationCanceledException ("Cancelado");
// throw new Exception ("Ocurrió un problema...");
return "Tarea completada";
}
public static void Main()
{
// Creación de una tarea con
// System.Threading.Task.Task:
Task tarea = new Task(MetodoAsincronico);
// Inicia la ejecución de la tarea:
tarea.Start();
// Espera a que la tarea se complete:
tarea.Wait();
Console.ReadLine();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment