Advertisement
Fhernd

MetodoAsincronicoExcepciones.cs

Jul 26th, 2014
4,226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.96 KB | None | 0 0
  1. using System;
  2. using System.Threading.Tasks;
  3.  
  4. namespace Articulos.Cap04
  5. {
  6.     public sealed class MetodoAsincronicoExcepciones
  7.     {
  8.         public static async void MetodoAsincronico()
  9.         {
  10.             Task<string> tarea = RetrasoAsincronico();
  11.            
  12.             try
  13.             {
  14.                 string resultado = await tarea;
  15.                 Console.WriteLine ("Resultado: {0}", resultado);
  16.             }
  17.             catch (Exception e)
  18.             {
  19.                 Console.WriteLine ("Mensaje de excepción: {0}", e.Message);
  20.             }
  21.            
  22.             Console.WriteLine ("¿La tarea fue cancelada?: {0}", tarea.IsCanceled.ToString());
  23.             Console.WriteLine ("¿La tarea falló?: {0}", tarea.IsFaulted.ToString());
  24.            
  25.             if (tarea.Exception != null)
  26.             {
  27.                 Console.WriteLine ("Mensaje de excepción: {0}", tarea.Exception.Message);
  28.                 Console.WriteLine ("Mensaje de excepción anidada: {0}", tarea.Exception.InnerException.Message);
  29.             }
  30.         }
  31.        
  32.         public static async Task<string> RetrasoAsincronico()
  33.         {
  34.             await Task.Delay(100);
  35.            
  36.             // Remueva los comentarios para demostrar
  37.             // el lanzamiento de excepciones en métodos
  38.             // asincrónicos:
  39.            
  40.             // throw new OperationCanceledException ("Cancelado");
  41.             // throw new Exception ("Ocurrió un problema...");
  42.            
  43.             return "Tarea completada";
  44.         }
  45.        
  46.         public static void Main()
  47.         {
  48.             // Creación de una tarea con
  49.             // System.Threading.Task.Task:
  50.             Task tarea = new Task(MetodoAsincronico);
  51.  
  52.             // Inicia la ejecución de la tarea:
  53.             tarea.Start();
  54.              
  55.             // Espera a que la tarea se complete:
  56.             tarea.Wait();
  57.              
  58.             Console.ReadLine();
  59.         }
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement