Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Threading;
- namespace Recetas.CSharp.Cap04.R0408
- {
- public sealed class UsoManualResetEvent
- {
- // Con una instancia de ManualResetEvent podemos
- // bloquear o liberar threads de forma manual:
- private static ManualResetEvent mre = new ManualResetEvent(false);
- public static void Main()
- {
- Console.WriteLine ("\nInicia la ejecución de 3 threads:");
- for (int i = 0; i <= 2; ++i)
- {
- Thread t = new Thread (Proceso);
- t.Name = String.Format ("Thread No. {0}", i.ToString());
- t.Start();
- }
- Thread.Sleep (500);
- Console.WriteLine ("\nUna vez que todos los threadas se han iniciado, " +
- "presione Enter para invocar al método `Set`" +
- " para liberar todos los threads.\n");
- Console.ReadLine ();
- mre.Set();
- Thread.Sleep (500);
- }
- private static void Proceso()
- {
- string nombreThread = Thread.CurrentThread.Name;
- Console.WriteLine ("{0} ha iniciado su ejecución e invocado el método WaitOne().", nombreThread);
- mre.WaitOne ();
- Console.WriteLine ("El thread {0} ha finalizado.", nombreThread);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement