Advertisement
Fhernd

ForegroundVsBackgroundWinForms.cs

Jul 17th, 2014
1,473
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.18 KB | None | 0 0
  1. using System;
  2. using System.Drawing;
  3. using System.Threading;
  4. using System.Windows.Forms;
  5.  
  6. namespace Recetas.Multithreading.Cap01.R0107
  7. {
  8.     public class ForegroundVsBackgroundWinForms : Form
  9.     {
  10.         private System.ComponentModel.IContainer components = null;
  11.        
  12.         public ForegroundVsBackgroundWinForms()
  13.         {
  14.             InitializeComponents();
  15.         }
  16.        
  17.         protected override void Dispose(bool disposing)
  18.         {
  19.             if (disposing)
  20.             {
  21.                 if (components != null)
  22.                 {
  23.                     components.Dispose();
  24.                 }
  25.             }
  26.             base.Dispose (disposing);
  27.         }
  28.        
  29.         protected void InitializeComponents()
  30.         {
  31.             this.SuspendLayout();
  32.             this.Font = new Font ("Trebuchet MS", 9);
  33.             this.FormBorderStyle = FormBorderStyle.FixedSingle;
  34.             this.MaximizeBox = false;
  35.             this.Name = "frmForegroundVsBackground";
  36.             this.Size = new Size (650, 231);
  37.             this.Text = "Foreground Vs Background Thread";
  38.            
  39.             CrearBotones();
  40.         }
  41.        
  42.         private void CrearBotones()
  43.         {
  44.             Button btnCrearBackgroundThread = new Button();
  45.             btnCrearBackgroundThread.Click += btnCrearBackgroundThread_Click;
  46.             btnCrearBackgroundThread.Location = new Point (17, 17);
  47.             btnCrearBackgroundThread.Name = "btnCrearBackgroundThread";
  48.             btnCrearBackgroundThread.Size = new Size (153, 23);
  49.             btnCrearBackgroundThread.Text = "Crear Thread Background";
  50.             this.Controls.Add (btnCrearBackgroundThread);
  51.            
  52.             Button btnCrearForegroundThread = new Button ();
  53.             btnCrearForegroundThread.AutoSize = true;
  54.             btnCrearForegroundThread.Click += btnCrearForegroundThread_Click;
  55.             btnCrearForegroundThread.Location = new Point (201, 17);
  56.             btnCrearForegroundThread.Name = "btnCrearForegroundThread";
  57.             btnCrearForegroundThread.Size = new Size (153,23);
  58.             btnCrearForegroundThread.Text = "Crear Thread Foreground";
  59.             this.Controls.Add (btnCrearForegroundThread);
  60.            
  61.             Label lblInstrucciones = new Label ();
  62.             lblInstrucciones.AutoSize = true;
  63.             lblInstrucciones.Location = new Point (17, 103);
  64.             lblInstrucciones.Text = String.Format ("Pasos:\n{0}\n{1}\n{2}",
  65.                 "1. Inicie el Administrador de Tareas y seleccione el proceso ForegroundVsBackgroundWinForms.exe \n    desde la pestaña Procesos.",
  66.                 "2. Prueba primero con uno de los botones y cierre la aplicación.",
  67.                 "3. Observe lo qué sucede después de cada clic en el Administrador de Tareas."
  68.             );
  69.             this.Controls.Add (lblInstrucciones);
  70.         }
  71.        
  72.         public void btnCrearBackgroundThread_Click (object sender, EventArgs e)
  73.         {
  74.             // Crea un thread para ejecutarlo en segundo plano:
  75.             Thread t = new Thread (Retraso);
  76.             t.IsBackground = true;
  77.             t.Start();
  78.            
  79.             MessageBox.Show ("Se ha invocado un thread que tomará 13 segundos en completarse.\n" +
  80.                              "Cierre la aplicación y observe lo que sucede en el Administrador de Tareas");
  81.         }
  82.        
  83.         public void btnCrearForegroundThread_Click(object sender, EventArgs e)
  84.         {
  85.             // Crea un thread para ejecución en primer plano:
  86.             Thread t = new Thread (Retraso);
  87.             t.IsBackground = false;
  88.             t.Start();
  89.            
  90.             MessageBox.Show ("Se ha invocado un thread que tomará 13 segundos en completarse.\n" +
  91.                              "Cierre la aplicación y observe lo que sucede en el Administrador de Tareas");
  92.         }
  93.        
  94.         private void Retraso()
  95.         {
  96.             Thread.Sleep (TimeSpan.FromSeconds (10));
  97.         }
  98.        
  99.         [STAThread]
  100.         public static void Main()
  101.         {
  102.             Application.EnableVisualStyles();
  103.             Application.Run (new ForegroundVsBackgroundWinForms());
  104.         }
  105.     }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement