Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Threading;
- namespace Recetas.Multithreading.Cap01.R0107
- {
- public sealed class ForegroundVsBackground
- {
- public static void Main()
- {
- Console.Title = "Foreground Vs Background Threads";
- Console.WriteLine ();
- // Creación de dos nuevos threads:
- Thread t1 = new Thread (Imprimir1);
- Thread t2 = new Thread (Imprimir2);
- // Asignación de identificadores textuales a los threads:
- t1.Name = "Primario";
- t2.Name = "Secundario";
- // Menú de selección:
- Console.WriteLine ("Escoja una opción:");
- Console.WriteLine ("\t1. Para ejecutar los threads en paralelo.");
- Console.WriteLine ("\t2. Foreground Vs Background.");
- int seleccion = Int32.Parse (Console.ReadLine ());
- Console.WriteLine ();
- switch (seleccion)
- {
- case 1:
- Console.WriteLine ("\n=== Ejecución en paralelo de threads ===");
- t1.Start();
- t2.Start();
- break;
- case 2:
- Console.WriteLine ("\n=== Foreground Vs Foreground ===");
- Console.WriteLine ("\t1. Ejecutar thread foreground.");
- Console.WriteLine ("\t2. Ejecutar thread background.");
- seleccion = Int32.Parse (Console.ReadLine ());
- switch (seleccion)
- {
- case 1:
- EjecutarThreadForeground();
- break;
- case 2:
- EjecutarThreadBackground();
- break;
- default:
- break;
- }
- break;
- default:
- break;
- }
- Console.WriteLine ("El método Main ha finalizado.");
- }
- // Método que imprime en pantalla un mensaje de actividad de
- // ejecución de un thread:
- private static void Imprimir1()
- {
- Console.WriteLine ("\nMétodo `Imprimir1` ejecutándose en el thread {0}.",
- Thread.CurrentThread.Name
- );
- for (int i = 1; i < 10; ++i)
- {
- Console.WriteLine ("Método1 en ejecución...");
- Thread.Sleep (1000);
- }
- }
- // Método que imprime en pantalla un mensaje de actividad de
- // ejecución de un thread:
- private static void Imprimir2()
- {
- Console.WriteLine ("\nMétodo `Imprimir2` ejecutándose en el thread {0}.",
- Thread.CurrentThread.Name
- );
- for (int i = 1; i < 10; ++i)
- {
- Console.WriteLine ("Método2 en ejecución...");
- Thread.Sleep (1000);
- }
- }
- // Método para incluir retraso en la ejecución del thread:
- private static void Retraso()
- {
- for (int i = 0; i < 10; ++i)
- {
- Console.WriteLine ("Ejecutándose...");
- Thread.Sleep (1000);
- }
- }
- // Ejecuta un thread en plano foreground:
- private static void EjecutarThreadForeground()
- {
- Thread foreground = new Thread (Retraso);
- foreground.Start();
- }
- // Ejecuta un trhread en plano background:
- private static void EjecutarThreadBackground()
- {
- Thread background = new Thread (Retraso);
- // Asigna true a la propiedad IsBackground:
- background.IsBackground = true;
- background.Start ();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement