Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Threading;
- namespace Recetas.CSharp.R0413
- {
- public sealed class FinalizarEjecucionThread
- {
- // Punto de entrada de ejecución de la aplicación:
- public static void Main()
- {
- Console.Title = "--- Terminación Ejecución de un Thread ---";
- Console.WriteLine ();
- // Creación de una instancia de `Thread`:
- Thread t = new Thread (MostrarMensaje);
- // Mensaje guía para el usuario:
- Console.WriteLine ("Inicio ejecución thread - {0} - {1}\n",
- DateTime.Now.ToString ("HH:mm:ss.ffff"),
- "Presione la tecla `Enter` para finalizar la ejecución."
- );
- // Iniciar la ejecución del método `MostrarMensaje`:
- t.Start();
- // Hasta que el usuario no presione la tecla `Enter`,
- // la ejecución del thread no finalizará:
- Console.ReadLine();
- // Invoca al método `Abort` con un mensaje alusivo
- // al evento que finalizó la ejecución:
- t.Abort ("El usuario presionó `Enter`");
- // Bloqueo temporal del thread `Main` para
- // realizar una espera de finalización del método
- // `MostrarMensaje`:
- t.Join();
- // Mensaje de finalización:
- Console.WriteLine ("\nPresione `Enter` para terminar la aplicación.");
- Console.ReadLine();
- }
- // Este método muestra información acerca de la
- // ejecución de un thread cada segundo:
- private static void MostrarMensaje()
- {
- try
- {
- while (true)
- {
- // Registro con la hora de generación
- // del mensaje:
- Console.WriteLine ("Thread en ejecución - {0}",
- DateTime.Now.ToString ("HH:mm:ss.ffff")
- );
- // Pausa durante un (1) segundo:
- Thread.Sleep (1000);
- }
- }
- catch (ThreadAbortException tae)
- {
- // Muestra información acerca la generación de
- // la excepción ThreadAbortException, junto con
- // el estado de la excepción, además de la hora:
- Console.WriteLine ("\nTerminación de la ejecución del thread: {0} - {1}",
- (string) tae.ExceptionState,
- DateTime.Now.ToString ("HH:mm:ss.ffff")
- );
- // Aquí podríamos incluir una llmada al método static
- // Thread.ResetAbort para cancelar la solicitud
- // de terminarción del thread:
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement