Advertisement
Fhernd

ForegroundVsBackground.cs

Jul 17th, 2014
1,480
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.99 KB | None | 0 0
  1. using System;
  2. using System.Threading;
  3.  
  4. namespace Recetas.Multithreading.Cap01.R0107
  5. {
  6.     public sealed class ForegroundVsBackground
  7.     {
  8.         public static void Main()
  9.         {
  10.             Console.Title = "Foreground Vs Background Threads";
  11.             Console.WriteLine ();
  12.            
  13.             // Creación de dos nuevos threads:
  14.             Thread t1 = new Thread (Imprimir1);
  15.             Thread t2 = new Thread (Imprimir2);
  16.            
  17.             // Asignación de identificadores textuales a los threads:
  18.             t1.Name = "Primario";
  19.             t2.Name = "Secundario";
  20.            
  21.             // Menú de selección:
  22.             Console.WriteLine ("Escoja una opción:");
  23.             Console.WriteLine ("\t1. Para ejecutar los threads en paralelo.");
  24.             Console.WriteLine ("\t2. Foreground Vs Background.");
  25.             int seleccion = Int32.Parse (Console.ReadLine ());
  26.            
  27.             Console.WriteLine ();
  28.            
  29.             switch (seleccion)
  30.             {
  31.                 case 1:
  32.                     Console.WriteLine ("\n=== Ejecución en paralelo de threads ===");
  33.                     t1.Start();
  34.                     t2.Start();
  35.                     break;
  36.                 case 2:
  37.                     Console.WriteLine ("\n=== Foreground Vs Foreground ===");
  38.                     Console.WriteLine ("\t1. Ejecutar thread foreground.");
  39.                     Console.WriteLine ("\t2. Ejecutar thread background.");
  40.                     seleccion = Int32.Parse (Console.ReadLine ());
  41.                     switch (seleccion)
  42.                     {
  43.                         case 1:
  44.                             EjecutarThreadForeground();
  45.                             break;
  46.                         case 2:
  47.                             EjecutarThreadBackground();
  48.                             break;
  49.                         default:
  50.                             break;
  51.                     }
  52.                     break;
  53.                 default:
  54.                     break;
  55.             }
  56.            
  57.             Console.WriteLine ("El método Main ha finalizado.");
  58.         }
  59.        
  60.         // Método que imprime en pantalla un mensaje de actividad de
  61.         // ejecución de un thread:
  62.         private static void Imprimir1()
  63.         {
  64.             Console.WriteLine ("\nMétodo `Imprimir1` ejecutándose en el thread {0}.",
  65.                 Thread.CurrentThread.Name
  66.             );
  67.            
  68.             for (int i = 1; i < 10; ++i)
  69.             {
  70.                 Console.WriteLine ("Método1 en ejecución...");
  71.                 Thread.Sleep (1000);
  72.             }
  73.         }
  74.        
  75.         // Método que imprime en pantalla un mensaje de actividad de
  76.         // ejecución de un thread:
  77.         private static void Imprimir2()
  78.         {
  79.             Console.WriteLine ("\nMétodo `Imprimir2` ejecutándose en el thread {0}.",
  80.                 Thread.CurrentThread.Name
  81.             );
  82.            
  83.             for (int i = 1; i < 10; ++i)
  84.             {
  85.                 Console.WriteLine ("Método2 en ejecución...");
  86.                 Thread.Sleep (1000);
  87.             }
  88.         }
  89.        
  90.         // Método para incluir retraso en la ejecución del thread:
  91.         private static void Retraso()
  92.         {
  93.             for (int i = 0; i < 10; ++i)
  94.             {
  95.                 Console.WriteLine ("Ejecutándose...");
  96.                 Thread.Sleep (1000);
  97.             }
  98.         }
  99.        
  100.         // Ejecuta un thread en plano foreground:
  101.         private static void EjecutarThreadForeground()
  102.         {
  103.             Thread foreground = new Thread (Retraso);
  104.             foreground.Start();
  105.         }
  106.        
  107.         // Ejecuta un trhread en plano background:
  108.         private static void EjecutarThreadBackground()
  109.         {
  110.             Thread background = new Thread (Retraso);
  111.             // Asigna true a la propiedad IsBackground:
  112.             background.IsBackground = true;
  113.             background.Start ();
  114.         }
  115.     }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement