fork download
  1. using System;
  2. using System.Threading;
  3.  
  4. namespace Recetas.Threading.Cap01
  5. {
  6. public sealed class VerificacionEstadoThread
  7. {
  8. public static void Main()
  9. {
  10. Thread nuevoThread = new Thread(
  11. delegate()
  12. {
  13. Console.WriteLine ("\nDentro del thread `nuevoThread`...");
  14. // Ciclo infinito...
  15. // Será interrumpido por nuevoThread.Abort() en
  16. // el thread Main:
  17. while(true);
  18. }
  19. );
  20.  
  21. // El thread nuevoThread aún no se ha iniciado:
  22. Console.WriteLine ("\n1 - Estado actual de `nuevoThread`: {0}", nuevoThread.ThreadState);
  23.  
  24. // Inicio del thread `nuevoThread`:
  25. nuevoThread.Start();
  26. Thread.Sleep (1000);
  27.  
  28. // `nuevoThread` se haya en ejecución:
  29. Console.WriteLine ("\n2 - Estado actual de `nuevoThread`: {0}", nuevoThread.ThreadState);
  30.  
  31. // Aborta la ejecución de `nuevoThread`:
  32. nuevoThread.Abort();
  33.  
  34. // Nuevo estado de `nuevoThread`:
  35. Console.WriteLine ("\n3 - Estado actual de `nuevoThread`: {0}", nuevoThread.ThreadState);
  36.  
  37. // Intento de poner en espera el thread Main,
  38. // sin embargo el `nuevoThread` ha sido abortado:
  39. nuevoThread.Join ();
  40.  
  41. Console.WriteLine ("\n4 - Estado actual de `nuevoThread`: {0}\n", nuevoThread.ThreadState);
  42. }
  43. }
  44. }
Success #stdin #stdout 1.05s 35048KB
stdin
Standard input is empty
stdout
1 - Estado actual de `nuevoThread`: Unstarted

Dentro del thread `nuevoThread`...

2 - Estado actual de `nuevoThread`: Running

3 - Estado actual de `nuevoThread`: AbortRequested

4 - Estado actual de `nuevoThread`: Stopped, AbortRequested