Created
June 20, 2014 22:26
-
-
Save Fhernd/b47b07e3c1757e55bb1c to your computer and use it in GitHub Desktop.
Demostración del uso de métodos asincrónicos con excepciones.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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