fork download
  1. using System;
  2. using System.Threading;
  3. using System.Threading.Tasks;
  4.  
  5. namespace Recetas.Multithreading.R0401
  6. {
  7. public class TareasAsincronicas
  8. {
  9. public static void Main()
  10. {
  11. Console.WriteLine ();
  12. // Creación de dos objetos Thread:
  13. Task tarea1 = new Task( () => TareaAsincronica("Tarea 1"));
  14. Task tarea2 = new Task( () => TareaAsincronica("Tarea 2"));
  15.  
  16. // Inicio ejecución de las dos tareas recién creadas:
  17. tarea2.Start();
  18. tarea1.Start();
  19.  
  20. // Uso del método static Run para la ejecución otra tarea:
  21. Task.Run( () => TareaAsincronica("Tarea 3"));
  22.  
  23. // Uso de StartNew de Factory para crear dos tareas más:
  24. Task.Factory.StartNew( () => TareaAsincronica("Tarea 4"));
  25. Task.Factory.StartNew( () => TareaAsincronica("Tarea 5"), TaskCreationOptions.LongRunning);
  26.  
  27. // Retardo de ejecución de Main de un segundo:
  28. Thread.Sleep (TimeSpan.FromSeconds(1));
  29.  
  30. Console.WriteLine ();
  31. }
  32.  
  33. public static void TareaAsincronica(string nombreTarea)
  34. {
  35. Console.WriteLine ("La tarea `{0}` se ejecuta en el thread con ID {1} " +
  36. "¿Es un thread del pool de threads?: {2}",
  37. nombreTarea, Thread.CurrentThread.ManagedThreadId,
  38. Thread.CurrentThread.IsThreadPoolThread);
  39. }
  40. }
  41. }
Success #stdin #stdout 0.05s 29256KB
stdin
Standard input is empty
stdout
La tarea `Tarea 2` se ejecuta en el thread con ID 4 ¿Es un thread del pool de threads?: True
La tarea `Tarea 5` se ejecuta en el thread con ID 5 ¿Es un thread del pool de threads?: False
La tarea `Tarea 1` se ejecuta en el thread con ID 4 ¿Es un thread del pool de threads?: True
La tarea `Tarea 3` se ejecuta en el thread con ID 4 ¿Es un thread del pool de threads?: True
La tarea `Tarea 4` se ejecuta en el thread con ID 4 ¿Es un thread del pool de threads?: True